Подтвердить что ты не робот

Какая разница между "? Android:" и "@android:" в XML файле android layout?

В чем разница между "? android:" и "@android:" в XML файле android layout? Они кажутся взаимозаменяемыми способами повторного использования ресурсов SDK для Android.

Единственное различие, которое я обнаружил, иллюстрируется следующим примером.

Здесь правый край TextView выровнен с левым краем ImageButton

 <RelativeLayout
    android:id="@id/header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#888888">
    <TextView
        android:id="@android:id/text1"
        android:layout_alignParentLeft="true"
        android:text="blah blah"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@android:id/button1" />
    <ImageButton
        android:id="@android:id/button1"
        android:layout_alignParentRight="true"
        style="@style/PlusButton" />
</RelativeLayout>

Здесь, однако, правый край TextView выравнивается с правым краем RelativeLayout. TextView перекрывает ImageButton.

<RelativeLayout
    android:id="@id/header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#888888">
    <TextView
        android:id="@android:id/text1"
        android:layout_alignParentLeft="true"
        android:text="blah blah"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="?android:id/button1" />
    <ImageButton
        android:id="?android:id/button1"
        android:layout_alignParentRight="true"
        style="@style/PlusButton" />
</RelativeLayout>

Единственное различие между двумя макетами - использование @android vs? android. Оба компилируются без ошибок.

Большое спасибо.

4b9b3361

Ответ 1

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

См. "Атрибуты атрибута стиля" здесь: accessing-resources