В чем разница между "? Android:" и "@android:" в XML-файле макета Android? Они кажутся взаимозаменяемыми способами повторного использования ресурсов Android SDK.
Единственное обнаруженное мной отличие иллюстрируется следующим примером.
Здесь правый край 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. Оба компилируются без ошибок.
Большое спасибо.