Android レイアウト XML ファイル内の「?android:」と「@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>
2 つのレイアウトの唯一の違いは、@android と ?android の使用です。どちらもエラーなしでコンパイルされます。
どうもありがとう。
ベストアンサー1
ID の先頭に疑問符を付けると、属性をハードコーディングするのではなく、スタイル テーマで定義されたスタイル属性にアクセスすることを示します。
「スタイル属性の参照」については、こちらを参照してください。リソースへのアクセス