web-dev-qa-db-ja.com

Android=のXML属性の疑問符(?)

誰でもAndroid XML属性で疑問符の意味を説明できますか?

<TextView    
    style="?android:attr/windowTitleStyle"
    More attributes
/>
133
Casebash

疑問符は、現在適用されているテーマのリソース値への参照であることを意味します。 linuxtopia Android Dev Guide または Android.com Dev Guide を参照してください。

\?は疑問符をエスケープします。

123
jball

?特定のハードコーディングされたリソースではなく、スタイルattributeを参照できます。詳細については、Android Dev Guideの "Referencing style attributes" を参照してください。

だから、これは実際にどのように便利ですか? 同じカスタムリソース属性を含む複数のテーマを検討する際に最も意味があります。

MyThemeTransformersやMyThemeHobbitなどの映画関連のテーマがあり、両方ともmovieIconという属性があるとします。そして、そのmovieIcon属性は、各テーマ定義の異なる@drawableリソース、たとえばrobot.pngまたはhobbit.pngを指します。

テーマが有効な場所であればどこでも(?attr/movieIcon)を参照できます(ツールバーやダイアログ、またはあらゆる種類のビューレイアウトなど)。テーマを切り替えるときに正しいドローアブル。さまざまなドロウアブルを使用するためにテーマ依存のロジックは必要ありません。各テーマのmovieIcon属性を定義するだけで、Androidフレームワークが残りを処理します。

34
Devon Biere