2015-03-30 2 views
1

В относительном макете я вижу картину, как:Как действует + id в RelativeLayout?

<TextView 
    android:id=“@+id/txt_id” 
    etc 
    android:layout_alignBottom="@+id/some_other_txt” 
    etc 
/> 

<TextView 
android:id="@+id/some_other_txt" 

etc 
/> 

Я думал +id используется только при создании идентификатора для виджета. Является ли это своего рода «трюком» для компоновки виджета относительно другого виджета, объявленного позже в файле?

UPDATE:
Этот вопрос конкретно о possitioning RelativeLayout. Не о различии в синтаксисе вообще как связанном вопросе

+2

вы ссылаетесь на View ** anticipately ** (вид, который еще не был создан в XML) с помощью '@ + id' , Но я предпочитаю создавать представление ** перед **, а затем ссылаться на него с помощью '@ id'. –

+0

@DiegoFreniche: Я думаю, что нет дубликатов. Мой вопрос касается RelativeLayout и не в целом разница между синтаксисом – Jim

+0

@DerGolem: Это где-то документально? Я не мог найти его где-то – Jim

ответ

0

Его просто контрольная точка для размещения разных элементов в компоновщике компоновки.

0

Из этого SO answer

В первый раз вы ссылаетесь идентификатор, используйте @ + префикс, который говорит строитель ресурсов, чтобы добавить идентификатор,

Здесь вы делаете опережающая ссылка на виджет & идентификатор, который уже не определено:

<TextView 
    android:id=“@+id/txt_id” 
    etc 
    android:layout_alignBottom="@+id/some_other_txt” 
    etc 
/> 

Здесь вы определения его:

<TextView 
android:id="@+id/some_other_txt" 

More context here

+0

Но это не должно быть объявлено виджету, который имеет идентификатор назначен? – Jim

+0

И это будет считаться первым, когда вы обратитесь к нему. ;) –

+0

Будучи ** ожидаемой ссылкой **, идентификатор создается ** до того, как ** Виджет имеет ** явно назначенный **. –

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