2016-12-04 1 views
0

Я столкнулся с приложением, чей макет меня озадачивает.Идентификатор ресурса Button Defined с использованием директивы Include в макете XML

Предположим, два файла XML макет, таким образом, что один включает в себя другой:

activity_button.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <include layout="@layout/button"/> 

</LinearLayout>%  

button.xml

<?xml version="1.0" encoding="utf-8"?> 
<Button xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="@string/button" 
    android:onClick="sendMessage">  
</Button> 

Что такое идентификатор ресурса кнопки?

Я думал, что всегда нужно указывать ID через атрибут android:id, поэтому я смущен, почему этот макет работает. Я также проверил ввод ID R.java и кажется пустым.

ответ

1

андроид: идентификатор

не является обязательным полем для представления в файле макета XML. единственными обязательными полями являются ширина и высота представления.

Подумайте о ситуациях, когда вы хотите, чтобы макет просто показывал какой-то заголовок без каких-либо бизнес-задач, чтобы изменить его на протяжении всей жизни. для этой необходимости вам не нужно получать этот идентификатор вида и не нужно накладных расходов на создание идентификатора для этого представления

1

Каков идентификатор ресурса кнопки?

ли не один

Я думал, что один всегда должен указать идентификатор с помощью атрибута android:id

Почему вы думаете, что? Вы часто оставляете этот атрибут для корневых представлений большинства макетов. (См. LinearLayout вашего вопроса)

Вам не нужен android:id, если вы никогда не ожидаете найти вид с помощью идентификатора. Поскольку onClick определен в XML, нет никакой цели в поиске кнопки.

Смежные вопросы