2012-02-03 107 views
28

我有一个TextView我为我的菜单页面的标题中使用:包括一个TextView和覆盖文本

<TextView 
    android:id="@+id/menuTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Menu" 
    android:textColor="@color/white" 
    android:textSize="25sp" 
    android:textStyle="bold" /> 

现在我需要在每个子菜单上相同的颜色,大小和样式一个TextView我应用程序。而不是将整个TextView粘贴到每个布局,只是更改每个布局中的文本,我认为我会用TextView制作一个布局,并将其包含在每个子菜单视图中,仅覆盖文本。

我的代码如下所示:

/layout/menutextview.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/menuTextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/default" 
    android:textColor="@color/white" 
    android:textSize="25sp" 
    android:textStyle="bold" /> 

的包括每个布局XML文件试图重写文本属性:

<include layout="@layout/menutextview" android:text="@string/menu" /> 

<include layout="@layout/menutextview" android:text="@string/settings" /> 

但默认文本显示在每个地方。任何人都有问题的可能是什么?

问候, 马蒂亚斯

回答

18

欢迎StackOverflow的;)

包括不能被用来 “overrride” 孩子的特性。它不知道你将包括哪种类型的布局,它只会膨胀它并将其添加到当前布局。

要动态更改文本,您需要在代码中执行此操作。

final TextView textView1 = (TextView) findViewById(R.id.menuTextView); 
textView1.setText(R.string.menu); 

final TextView textView2 = (TextView) findViewById(R.id.settingsTextView); 
textView2.setText(R.string.settings); 
+1

这是您可以用于解决此问题的最简单易行的解决方案。 – 2012-02-03 10:35:24

+1

是否有没有自定义字段,我可以将任何我想要从xml传递到代码?像这样:然后在代码中我可以去((TextView)findViewById(R.id.menuTextView))。setText(getCustom )); – Mattias 2012-02-03 13:11:35

+1

我想和你一样,根据文档,你只能覆盖layout(和id)属性。 – viplezer 2013-06-07 12:35:36

14

尝试使用风格,并有TextView的实现这种风格。这将使您更容易在视图中保持一致性。