Android レイアウト XML ファイル内の "?android:" と "@android:" の違いは何ですか? 質問する

Android レイアウト XML ファイル内の

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 の先頭に疑問符を付けると、属性をハードコーディングするのではなく、スタイル テーマで定義されたスタイル属性にアクセスすることを示します。

「スタイル属性の参照」については、こちらを参照してください。リソースへのアクセス

おすすめ記事