Pertanyaan Apakah ini menegaskan bahwa saya tidak dapat menggunakan atribut warna bertema dalam sumber daya daftar warna


Apakah itu menegaskan bahwa saya tidak dapat menggunakan atribut warna bertema, dalam warna daftar sumber daya negara?

Saya memiliki kode berikut yang bekerja sangat sempurna.

color / home_menu_text_view_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#ffffffff" />    <!-- pressed -->
    <item android:state_focused="true" android:color="#ffffffff" />    <!-- focused -->
    <item android:state_selected="true" android:color="#ffffffff" />   <!-- selected -->
    <item android:color="#ff000000" />                                 <!-- default -->
</selector>

layout / home_menu_row.xml

<!-- Use duplicateParentState, so that we can receive click event from parent linear layout -->
<TextView
    android:id="@+id/name"
    android:gravity="center_vertical"
    android:padding="5dp"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="48dp"
    android:duplicateParentState="true"        
    android:textColor="@color/home_menu_text_view_selector"
    android:drawablePadding="10dp" />

Namun, jika saya menyetel kode ke yang berikut, itu tidak lagi berfungsi. Ketika dalam mode default, itu tidak lagi berubah ke warna yang dikehendaki. ?android:attr/textColorPrimary anggaplah menjadi warna hitam (# ff000000) dalam kasus saya.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#ffffffff" />    <!-- pressed -->
    <item android:state_focused="true" android:color="#ffffffff" />    <!-- focused -->
    <item android:state_selected="true" android:color="#ffffffff" />   <!-- selected -->
    <item android:color="?android:attr/textColorPrimary" />            <!-- default -->
</selector>

Seseorang menanyakan pertanyaan serupa Dapatkah sumber daya pemilih menggunakan warna yang ditentukan dalam gaya? sebagai milik saya, tetapi belum ada jawaban konkret. Oleh karena itu, saya membuang bola ini lagi. :)


5
2018-03-28 02:54


asal


Jawaban:


Diedit sesuai Komentar yang diterima

FYI, saya yakin ini telah diperbaiki di API 23. Anda seharusnya bisa   menyatakan atribut di dalam daftar negara berwarna sekarang. - Alex Lockwood

Jawaban Lama

Bukan karena kurang keahlian dalam bahasa Inggris, tetapi karena keahlian yang kurang pada inti Android, saya kurang kata-kata untuk menjelaskan ini, Masih menulis jawaban untuk membuat titik yang saya miliki dalam pikiran saya untuk topik ini.

Android Attribute (attr) dan Android Color keduanya adalah hal yang benar-benar terpisah. Hanya karena attr juga menentukan nilai warna yang tidak dapat Anda hubungkan dengan warna format tunggal.

attr digunakan untuk mendefinisikan banyak hal lainnya tentang pandangan, itu referensi, warna, dimensi, jenis dll. Bahkan ketika Anda tidak lulus format apa pun, ia mengambil nilai default beberapa format digunakan untuk menerapkan atribut style.

Sebagai contoh : Anda dapat menggunakan ImageView untuk menampilkan gambar dengan menetapkan sebagai src dan juga dapat mengambil satu LinearLayout dan menampilkan gambar dengan menyetelnya ke latar belakang. Jika Anda menggunakan Tata Letak, bukan ImageView untuk menampilkan gambar, maka Anda tidak dapat menerimanya untuk melakukan skala otomatis seperti pangkas tengah, fitXY yang hanya dimungkinkan dengan ImageView.

Cara yang sama saat menulis selector Anda bisa memberikan warna dan itu kode warna hexa atau warna yang ditentukan, tetapi Anda tidak bisa mengaturnya attr sebagai color karena pemilih item android: warna hanya menerima nilai warna sementara attr secara default memiliki beberapa format lain juga seperti tipe.

Jawaban Jalur Tunggal: attr tidak berwarna, ya itu memiliki satu format yang mengatakan warna, tetapi warna bukan satu-satunya format yang attr mengandung sehingga Anda tidak dapat menggunakan attr bukan warna.


1
2018-03-28 06:06