разница между @id и @android: id - PullRequest
14 голосов
/ 02 марта 2012
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ListView android:id="@android:id/list" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:layout_weight="1" />
    <Spinner android:id="@+id/section_spinner"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:layout_margin="5dp" />
</LinearLayout>

В чем разница между @android: id и @id в этом случае?

Ответы [ 4 ]

24 голосов
/ 02 марта 2012

Символ at (@) в начале строки указывает, что анализатор XML должен проанализировать и развернуть оставшуюся часть строки идентификатора и идентифицировать его как ресурс идентификатора. Знак плюс (+) означает, что это новое имя ресурса, которое необходимо создать и добавить в наши ресурсы (в файле R.java). Существует ряд других ресурсов ID, предлагаемых платформой Android. При ссылке на идентификатор ресурса Android вам не нужен символ плюса, но вы должны добавить пространство имен пакета Android.

@+id/section_spinner означает, что вы создаете идентификатор с именем section_spinner в пространстве имен вашего приложения. Вы можете обратиться к нему, используя @ id / section_spinner.

@android:id/list означает, что вы ссылаетесь на список, определенный в пространстве имен Android.

«+» означает создание символа, если он еще не существует. Он не нужен (и не должен использоваться) при обращении к символам android: потому что они уже определены для вас платформой, и вы все равно не можете создать свой собственный в этом пространстве имен.

23 голосов
/ 02 марта 2012

Вам нужно использовать @+id, когда вы определяете свой собственный Id для вида, который в данном случае равен section_spinner @android:id используется, когда вам нужно установить Id представления для предварительно определенного Id для Android в фреймворке.например, при использовании ListActivity, TabWidget / FrameLayout в TabHost и т. д.

8 голосов
/ 02 марта 2012

идентификатор вашего собственного идентификатора, идентификатор Android является идентификатором по умолчанию, присутствующим в платформе Android. У res / values ​​/ ids.xml было несколько идентификаторов, как показано ниже для API 10

res/values/ids.xml

- все это идентификаторы по умолчанию для Android

<resources>
  <item type="id" name="background" />
  <item type="id" name="checkbox" />
  <item type="id" name="content" />
  <item type="id" name="empty" />
  <item type="id" name="hint" />
  <item type="id" name="icon" />
  <item type="id" name="icon1" />
  <item type="id" name="icon2" />
  <item type="id" name="input" />
  <item type="id" name="left_icon" />
  <item type="id" name="list" />
  <item type="id" name="menu" />
  <item type="id" name="message" />
  <item type="id" name="primary" />
  <item type="id" name="progress" />
  <item type="id" name="right_icon" />
  <item type="id" name="summary" />
  <item type="id" name="selectedIcon" />
  <item type="id" name="tabcontent" />
  <item type="id" name="tabhost" />
  <item type="id" name="tabs" />
  <item type="id" name="text1" />
  <item type="id" name="text2" />
  <item type="id" name="title" />
  <item type="id" name="title_container" />
  <item type="id" name="toggle" />
  <item type="id" name="secondaryProgress" />
  <item type="id" name="lock_screen" />
  <item type="id" name="edit" />
  <item type="id" name="widget_frame" />
  <item type="id" name="button1" />
  <item type="id" name="button2" />
  <item type="id" name="button3" />
  <item type="id" name="extractArea" />
  <item type="id" name="candidatesArea" />
  <item type="id" name="inputArea" />
  <item type="id" name="inputExtractEditText" />
  <item type="id" name="selectAll" />
  <item type="id" name="cut" />
  <item type="id" name="copy" />
  <item type="id" name="paste" />
  <item type="id" name="copyUrl" />
  <item type="id" name="switchInputMethod" />
  <item type="id" name="keyboardView" />
  <item type="id" name="closeButton" />
  <item type="id" name="startSelectingText" />
  <item type="id" name="stopSelectingText" />
  <item type="id" name="addToDictionary" />
  <item type="id" name="accountPreferences" />
  <item type="id" name="smallIcon" />
  <item type="id" name="custom" />
3 голосов
/ 02 марта 2012
@id 

Вы ссылаетесь на свой собственный определенный id в вашем проекте.

и

@android:id

Вы ссылаетесь на идентификаторы, определенные в платформе Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...