В чем разница между «? Android:» и «@android:» в XML-файле макета Android?

В чем разница между "? 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 против? Android. Оба компилируются без ошибок.

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

42
задан Julian A. 23 January 2011 в 01:58
поделиться