Android Styles: Unterschied zwischen 'style = "@ android: style / XYZ" und' style = "? Android: attr / XYZ" "?

Ich versuche, Schaltflächen so zu gestalten, dass sie denen ähneln, nach denen ich frageAndroid ICS-Stil in voller Breite Minimalist Bottom ButtonsViews.

Ich habe es geschafft, mit der folgenden XML für alle Interessierten:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="bottom"
        android:divider="@android:drawable/divider_horizontal_dark"
        android:gravity="bottom"
        android:orientation="vertical"
        android:paddingTop="16dip"
        android:showDividers="beginning|end" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:measureWithLargestChild="true"
            android:orientation="horizontal"
            android:divider="@android:drawable/divider_horizontal_dark"
            android:showDividers="middle" >                             


            <Button
                android:id="@+id/cancel_button"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_weight="1"
                android:maxLines="2"
                android:text="@string/cancel_button" />

            <Button
                android:id="@+id/login_button"
                style="?android:attr/buttonBarButtonStyle"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_weight="1"
                android:filterTouchesWhenObscured="true"
                android:maxLines="2"
                android:text="@string/login_button" />

        </LinearLayout>
    </LinearLayout>

Eine Frage allerdings. Die Eclipse-Inhaltshilfe hat keine Ahnung, was mit der folgenden Ressourcenauflösung passiert:

style="?android:attr/buttonBarButtonStyle"

Ich kenne die typische Auflösung (die der Inhaltsassistent von Eclipse kennt)

style=@android/style/...

... aber der Unterschied zwischen den beiden ist mir nicht klar. Es sieht so aus, als ob einige Stilattribute in einem, aber nicht in dem anderen Stil auftreten. Zum Beispiel wird das Folgende nicht in irgendetwas aufgelöst:

style=@android:attr/buttonBarStyle

und das auch nicht:

style="@android:style/buttonBarStyle

Ich vermute also zwei Fragen hier:

Warum der Unterschied in der Syntax der Ressourcenverweise?Warum die verwirrende Fehlkategorisierung von Stilen unter einer Attributkategorie.Wofür wird die Kategorie attr überhaupt noch einmal verwendet?

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage