Tanda tanya (?) Dalam atribut XML untuk Android

140

Adakah yang bisa menjelaskan arti tanda tanya dalam atribut Android XML?

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

Jawaban:

132

Tanda tanya berarti referensi ke nilai sumber daya dalam tema yang saat ini diterapkan. Lihat Panduan Dev Androidtopia linuxtop atau Panduan Dev android.com untuk informasi lebih lanjut.

\? lolos dari tanda tanya.

jball
sumber
3
Saya pikir akan lebih baik untuk mengarahkan tautan kedua Anda ke: developer.android.com/guide/topics/resources/…
Casebash
9
Artikel Dev Guide telah direstrukturisasi, ini adalah tautan langsung baru: developer.android.com/guide/topics/resources/…
mernen
3
Saya pikir itu lebih tepat untuk dikatakan? digunakan untuk "Referensi atribut gaya" daripada "referensi ke nilai sumber daya dalam tema yang saat ini diterapkan". Menurut tautan panduan dev android.com yang Anda berikan.
Helin Wang
5
Saya pikir itu paling masuk akal ketika mempertimbangkan beberapa tema yang mengandung atribut sumber daya kustom yang sama. Katakanlah Anda memiliki tema yang berkaitan dengan film seperti MyThemeTransformers dan MyThemeHobbit, dan keduanya memiliki atribut yang disebut movieIcon. Dan movieIcon menunjuk ke sumber daya @drawable, katakan robot atau gambar hobbit, dalam setiap definisi tema. Anda dapat merujuk ke "? Attr / movieIcon" di mana saja tema berlaku (seperti di bilah alat atau dialog atau tata letak tampilan apa pun), dan itu akan secara otomatis menunjuk ke gambar yang benar ketika Anda beralih di antara tema. Saya harap itu membantu.
Devon Biere
1
@DevonBiere itu membantu! Akan lebih bagus jika Anda mengirimkan komentar sebagai jawaban.
Alexander Suraphel
37

Itu? memungkinkan Anda merujuk ke atribut style alih-alih sumber daya hard-coded tertentu . Lihat "Mengacu atribut gaya" di Panduan Pengembang Android untuk detailnya.

Jadi, bagaimana ini sebenarnya berguna? Sangat masuk akal ketika mempertimbangkan beberapa tema yang mengandung atribut sumber daya kustom yang sama .

Katakanlah Anda memiliki tema yang berkaitan dengan film seperti MyThemeTransformers dan MyThemeHobbit, dan keduanya memiliki atribut yang disebut movieIcon . Dan atribut movieIcon menunjuk ke sumber daya @drawable berbeda, misalkan robot.png atau hobbit.png, di setiap definisi tema.

Anda dapat merujuk ke " ? Attr / movieIcon " di mana saja tema berlaku (seperti di bilah alat atau dialog atau tata letak tampilan apa pun), dan itu akan secara otomatis menunjuk ke gambar yang benar ketika Anda beralih di antara tema. Anda tidak memerlukan logika yang bergantung pada tema untuk menggunakan drawable yang berbeda. Anda cukup mendefinisikan atribut movieIcon untuk setiap tema dan kerangka kerja Android menangani sisanya.

Devon Biere
sumber