Android: почему значение текстового атрибута textView равно id?
<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="@+id/label"? Есть другое использование?
2 ответа
<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>
Согласитесь с ответом ZeroOne. Добавляя к нему, вы сказали о динамически меняющемся значении textView внутри вашего класса активности
TextView tv = (TextView) findViewById(R.id.label);
Идентификатор, который вы использовали в макете, вы используете здесь, чтобы обратиться к нему. Ты используешь R.id.label
потому что Android имеет
автогенерируемая
R.class
файлы с уникальным шестнадцатеричным кодом для всех объектов, строковых ссылок, ресурсов, макетов, цветов, стилей и идентификаторов (большинство из них являются окончательными статическими) и т. д. Итак, вы говорите
R.id.label
(это идентификатор ресурса типа int)
Перейти к классу R -> Id -> имя переменной
Чтобы установить значение для вашего просмотра текста
tv.setText("Hello World");
Если в вашем файле макета, если вы используете
android:text="@+id/label"
Это просто помещает значение текста, чтобы установить к 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