Android:为什么textView文本属性值是id?

时间:2017-02-16 14:24:54

标签: android textview android-textattributes

<TextView
    android:id="@+id/label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@+id/label"
    android:textSize="20px" >
</TextView>

这是具有自定义布局的ListActivity的部分代码。所以它可以动态设置值。为什么android:text =&#34; @ + id / label&#34; ?还有其他用途吗?

2 个答案:

答案 0 :(得分:0)

<TextView
    android:id="@+id/label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@+id/label"   <-- wrong
    android:text="@string/label"   <-- get text from string.xml
    android:text="Label"     <-- direct text
    android:textSize="20px" >
</TextView>

答案 1 :(得分:0)

同意ZeroOne的回答。添加到他说你关于动态改变textView的价值 在您的活动课程内

TextView tv = (TextView) findViewById(R.id.label);

您在布局中使用的ID,您在此处使用它来引用它。您正在使用R.id.label,因为android有一个

  

自动生成R.class

具有所有对象,字符串引用,资源,布局,颜色,样式和ID的唯一十六进制代码的文件(大多数是最终静态的)等等。所以你在说

  

R.id.label(它是int类型的资源ID)

转到R类 - &gt; Id - &gt;变量名称

将值设置为textview

tv.setText("Hello World");

如果您在布局文件中使用

android:text="@+id/label"

它只是将text的值设置为textview为@+id/label。除非您想要显示@+id/label ..

,否则这实际上没有任何意义

如果你的计划是将textview的值设置为布局文件本身的标签那么就像ZeroOne所说的那样 使用

android:text="label"

或者

android:text="@string/my_label" // for this to work you need to add reference in strings.xml inside your res folder