Wann verwenden Sie "? Android" oder "@android"?

Ich bin ein Neuling und versuche, den folgenden XML-Code zu verstehen:

Betrachtet man die Dokumentation bei developer.android.com, heißt es "StarStyle" ist eine Konstante in R.attr und

  • WinDeath auf notifyDataSetChanged ()
  • Einfacher Export und Import einer SQLite Datenbank auf Android
  • Empfangen von Video-Stream von einer IP-Kamera auf Android
  • Wie bekomme ich Android Studio zu stoppen zurückgegeben generierten Code in den Suchergebnissen?
  • Wie man bezahlte Android Apps von einem Google-Konto auf ein anderes Google-Konto überträgt
  • Ein Angebot an Google Wallet speichern

  • Public static final int starStyle Seit: API Level 1

    Standard-Star-Stil.

    Muss ein Verweis auf eine andere Ressource sein, in der Form "@ [+] [Paket:] Typ: Name" oder zu einem Themenattribut in der Form "? [Paket:] [Typ:] Name".

    Es scheint zu sagen, dass es 2 Syntax gibt, die ich erklären kann. 1) "@ [+] [Paket:] Typ: Name" 2) "? [Paket:] [Typ:] Name".

    Wenn es 2 Syntax gibt, was ist das richtige für "@ [+] [Paket:] Typ: Name"?

    Ich habe versucht "" @android: attr / starStyle "aber ich habe nicht ein" Stern "Checkbox, obwohl die Anwendung kompiliert ok.

  • Wie behalte man EditText Daten bei der Orientierungsänderung?
  • Google Login ohne Google+ Profil
  • Zu viele Aktivitäten in Android?
  • Klicken Sie auf die obere Hälfte eines Knopfes - funktioniert nicht?
  • Wie man android macht: background = "? Android: attr / selectableItemBackground Arbeit in API Ebene 8
  • Bild Hintergrund - wie man Bild als Hintergrund wiederholen, anstatt es zu dehnen
  • 6 Solutions collect form web for “Wann verwenden Sie "? Android" oder "@android"?”

    Die @ -syntax wird für Ressourcen verwendet, die in Ihrem Projekt oder dem Android-Framework definiert sind. Das? -syntax wird für Ressourcen im aktuellen Thema verwendet.

    Für starStyle, die im Thema definiert werden soll, willst du:

    "Android: attr / starStyle"

    Sehen Sie hier für einige Ausarbeitung auf Themenressourcen.

    SO VIEL ICH WEISS…

    "? [Paket:] [Typ:] Name" bezieht sich auf einen Android-Stil. Als Beispiel würde ein Fortschrittsdialog-Stilattribut wie folgt aussehen:

    Style = "? Android: attr / progressBarStyleLarge"

    Eine Erklärung

    • ? =
    • [Paket:] = Android:
    • [Type:] = attr (Attribut)
    • Name = progressBarStyleLarge (oder in deinem Fall: starStyle)

    Allerdings werden Stile auch mit dem @ …

    "@ [+] [Paket:] Typ: Name" ist eine Ressource irgendwelcher Art.

    Also für einen Stil, würden Sie alle Ihre Stile in einer Datei namens 'styles.xml' in Ihrem 'Werte' Verzeichnis deklarieren.

    <style name="mono_text_headers"> <item name="android:textSize">16sp</item> <item name="android:typeface">monospace</item> <item name="android:layout_marginBottom">5dp</item> </style> 

    Dann verweisen sie einfach wie ein String, ziehbar, etc .. style="@style/mono_text_headers"

    http://developer.android.com/guide/topics/ui/themes.html

    Android bietet eine Verknüpfung, um Ihnen zu ermöglichen

    Verwenden Sie Stile aus dem aktuell angewandten Thema.

    Um dies zu tun, verwenden Sie ?android: anstatt @ als Präfix für die Ressource, die Sie verwenden möchten.

    Beispiel:

     <EditText android:id="@+id/myEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@android:string/url" android:textColor="?android:textColor" /> 

    Diese Technik ermöglicht es Ihnen, Stile zu erstellen, die sich ändern, wenn sich das aktuelle Thema ändert, ohne dass Sie jede einzelne Stilressource ändern.

    Ich habe viel auf diese Frage überprüft, denn es verwirrt mich sehr einmal.

    Der Name nachher? Sie referenzieren einen Variablennamen, der im <declare-styleable> .

    Der Name nach @ ist der von Ihnen oder dem System definierte Stilname.

    Lassen Sie mich eine Analogie von C ++.

    Sag, wir haben string str1 = "Hello world" .

    ? str2 = str1 wie string str2 = str1 . Es bedeutet, dass Sie den Wert von str1 .

    @ string str2 = "Hello world" wie string str2 = "Hello world" . Es bedeutet, dass Sie den Wert direkt verwenden.

    @ Wird verwendet, um auf definierte Ressourcen zuzugreifen

     "@android:drawables/test.png" 

    ? Wird verwendet, um auf den definierten Themenstil zuzugreifen

     "?android/attr/style" 

    Hoffe das hilft

    Ich bin mir nicht sicher, kurz und einfach.

    ? Stellt dar, dass die Ressourcendefinition Teil eines Frameworks ist

    @ Stellt dar, dass die Ressourcendefinition Teil einer Projekt- / Supportbibliothek ist

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.