Идентификаторы в макете Android XML с «+» и без него [дубликаты]

1

Возможный дубликат:
Разница между "@id/" и "@+id/" в Android

Когда вы создаете XML файл макета для приложений для Android, вы обычно объявляете идентификатор каждого элемента макета как:

@+id/elementID

Не так ли? Я думаю, что "+" означает, что этот идентификатор элемента только что создан, и поэтому вам нужен плюс, правильно?

Но что вы должны делать, когда ссылаетесь на элемент макета до его создания? Вы ссылаетесь на него с помощью "+", а затем создаете его без "+"? Проще говоря, правилен ли следующий код (в контейнере RelativeLayout)?

<ImageButton
    android:id="@+id/helpButton"
    android:layout_toLeftOf="@+id/moreButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
<ImageButton
    android:id="@id/moreButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true" />
  • 0
    да, когда вы даете ссылку на предопределенный макет или представление, которое вы используете без + как относительный макет rightOf / leeftOF как
Теги:
relativelayout
layout

1 ответ

2
Лучший ответ

Я думаю, что "+" означает, что этот идентификатор элемента только что создан, и поэтому вам нужен плюс, правильно?

Да.

Вы ссылаетесь на него с помощью "+", а затем создаете его без "+"?

Да. Первое вхождение идентификатора получает +. Второе и последующее появление может оставить его.

Проще говоря, правилен ли следующий код (в контейнере RelativeLayout)?

Ну, у ваших ImageButtons отсутствуют изображения... :-)

При этом ваше использование знака + кажется прекрасным.

  • 0
    Спасибо, это именно то, что я думал. Конечно, у моих кнопок изображений есть изображения, но я их отключил. Можете ли вы сослаться на какие-либо источники, которые доказывают это? (Поскольку другие думают иначе об этом, см. Другой ответ.)
  • 0
    @MarcoW .: Хорошо, developer.android.com/guide/topics/ui/declaring-layout.html#id , для начала. Также посмотрите примеры RelativeLayout на сайте разработчиков Android. Это действительно только вступает в игру с RelativeLayout - другие контейнеры не используют ссылки на ресурсы виджета.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню