2013-05-22 7 views
7

Qual è la differenza traQual è la differenza tra @android: e Android:?

android:color="@android:color/black" 

e

style="?android:attr/borderlessButtonStyle" 

Qual è la differenza tra il @ e ??

Questa è una di quelle domande che è ingooglibile o ogooglebar.

+0

Da [Accesso alle risorse] (http://developer.android.com/guide/topics/resources/accessing-resources .html): per fare riferimento a un attributo di stile, la sintassi del nome è quasi identica al normale formato di risorsa, ma invece del simbolo at '(@)', usa un punto interrogativo '(?)' e il tipo di risorsa la porzione è facoltativa. – devnull

+0

Questo non è ungoogleable .... :) –

+0

L'interferenza di URL per questa domanda è divertente. –

risposta

5

(da this risposta, e le sue osservazioni)

Preporre l'ID con un punto interrogativo indica che si vuole accedere ad un attributo di stile che è definito in un tema in stile, piuttosto che hard-codifica l'attributo, come spiegato in Referencing Style Attributes.

In particolare, lo ? implica un ulteriore livello di riferimento indiretto. Consideralo come dereferenziare un attributo theme per recuperare la risorsa a cui punta piuttosto che fare riferimento all'attributo stesso. Si veda questo con Android:? Attr/foo

9

@android: colore/nero

significa che si fa riferimento a un colore definito nel namespace Android. Questo spazio dei nomi è lo spazio dei nomi del framework.

ricerca nera in questo file: black color in framework

style = "android:? Attr/borderlessButtonStyle" "? Android: attr/borderlessButtonStyle"

significa semplicemente "utilizzare il valore definito dal attributo chiamato borderlessButtonStyle nello spazio dei nomi di Android. " Questo attributo e il suo valore fanno parte del framework Android, lo spazio dei nomi "android".

borderlessButtonStyle in framework


Modificato: da questo Referencing Style Attributes

questo link ci dicono:

Ad esempio, ecco come si può fare riferimento a un attributo per impostare il colore del testo in base al colore del testo "primario" di il tema di sistema:

<EditText id="text" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="?android:textColorSecondary" 
    android:text="@string/hello_world" /> 
+1

Wow che è letteralmente corretto senza rispondere effettivamente alla domanda. – Chloe

+1

controlla le mie ans modificate e dimmi qual è il tema del sistema? –