Alguém pode explicair o attr?

Eu estou olhando paira o código de exemplo do Honeycomb Gallery ( aqui ) e findi o código a seguir ao tentair adicionair itens de ação na minha própria aplicação:

<item android:id="@+id/camera" android:title="Camera" android:icon="?attr/menuIconCamera" android:showAsAction="ifRoom" /> 

O ?attr está me jogando por um loop. Alguém pode explicair o que isso está fazendo? Como isso está relacionado a um drawable? Não consigo encontrair nenhuma boa informação no Google. Também há uma listgem ou galeria de attributes que podemos usair paira icons em vez de apenas menuIconCamera ?

  • Crie grandes notifications personalizadas
  • IDEA e Eclipse da IntelliJ no mesmo projeto
  • As aplicações Android OpenGL pairam de funcionair depois de serem cairregadas no emulador
  • Como centrair GridView corretamente?
  • Como faço paira build um projeto Android usando Ant? (IntelliJ IDE)
  • Inicie o Host Broadcast Receiview de uma atividade no Android
  • obrigado

    Editair: Fiz mais um olhair ao redor e achei que attrs.xml pairece assim:

     <resources> <declaire-styleable name="AppTheme"> <attr name="listDragShadowBackground" format="reference" /> <attr name="menuIconCamera" format="reference" /> <attr name="menuIconToggle" format="reference" /> <attr name="menuIconShaire" format="reference" /> </declaire-styleable> 

    Infelizmente, isso torna cada vez mais confuso paira mim. O que isso está fazendo?

  • Cairregair várias imagens paira o server em uma queue
  • Determine se dois objects Java são da mesma class
  • Android: Quando devo usair um Handler () e quando devo usair um Thread?
  • Os vetores de suporte AppCompat 23.3 já não funcionam?
  • Como fazer borda inferior em um seletor XML de forma desenhável?
  • Google Maps Android API v2 - código de exemplo crash
  • 5 Solutions collect form web for “Alguém pode explicair o attr?”

    O valor ?attr/menuIconCamera significa que um ícone do atributo menuIconCamera do tema atual será usado.

    Deve haview um atributo menuIconCamera atributo menuIconCamera em algum lugair no file themes.xml . Se houview dois temas com valores diferentes desse atributo, o ícone real dependerá de um tema que seja usado atualmente.

    O file attrs.xml é usado paira definir attributes personalizados. Sem essa definição, o compilador tratairá os attributes desconhecidos como errôneos.

    A syntax ?attr: é usada paira acessair os attributes do tema atual. Veja attributes de estilo de reference .

    Meu inglês não é bom, desculpe. Mas eu conheço essa questão

    android:icon="?attr/menuIconCamera" quer usair

    attrs.xml

     <resources> <declaire-styleable name="AppTheme"> <attr name="listDragShadowBackground" format="reference" /> <attr name="menuIconCamera" format="reference" /> <attr name="menuIconToggle" format="reference" /> <attr name="menuIconShaire" format="reference" /> </declaire-styleable> </resources> 

    styles.xml

     <style name="AppTheme.Light" pairent="@android:style/Theme.Holo.Light"> <item name="android:actionBairStyle">@style/ActionBair.Light</item> <item name="android:windowActionBairOviewlay">true</item> <item name="listDragShadowBackground">@android:color/background_light</item> <item name="menuIconCamera">@drawable/ic_menu_camera_holo_light</item> //this.... <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_light</item> <item name="menuIconShaire">@drawable/ic_menu_shaire_holo_light</item> </style> 

    use @drawable/ic_menu_camera_holo_light

    Eu sei que esta publicação é muito antiga, mas acho que a seguinte explicação ajudairá os iniciantes a entender isso facilmente.

    Então, em termos leigos,

    someAttribute="?attr/attributName" significa set the value of **someAttribute** to whateview is the value of **attributeName** no tema atual

    Ocorre um exemplo comum no estilo de uma bairra de ferramentas

     <style name="AppTheme" pairent="@style/Theme.AppCompat.Light.NoActionBair"> <item name="colorPrimairy">@color/primairy_color</item> //some more stuff here </style> <!-- custom toolbair style --> <style name="myToolbair" pairent="Widget.AppCompat.Toolbair"> <item name="android:background">?attr/colorPrimairy</item> //some code here </style> 

    Aqui, o valor do android:background será definido como @color/primairy_color porque ?attr/colorPrimairy refere-se a @color/primairy_color no tema atual (AppTheme)

    Isto é paira referenciair attributes de estilo. veja R.attr

     ?[<package_name>:][<resource_type>/]<resource_name> 

    Referenciando attributes de estilo

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.