Bisakah saya mengubah warna latar belakang item Menu di Android?
Tolong beri tahu saya jika ada yang punya solusi untuk ini. Opsi terakhir jelas akan menyesuaikannya tetapi apakah ada cara untuk mengubah warna teks tanpa mengubahnya.
Bisakah saya mengubah warna latar belakang item Menu di Android?
Tolong beri tahu saya jika ada yang punya solusi untuk ini. Opsi terakhir jelas akan menyesuaikannya tetapi apakah ada cara untuk mengubah warna teks tanpa mengubahnya.
Jawaban:
Satu baris sederhana di tema Anda :)
sumber
actionBarStyle
misalnya. Ini tidak akan berfungsi di dalamactionBarStyle
, meskipun itu tampak logis!<item name="actionMenuTextColor">@color/your_color</item>
jangan gunakan namespace Androidtheme
atribut pada bilah alat, ini berfungsi.Tampaknya sebuah
dalam tema saya dan
di styles.xml ubah gaya item daftar tetapi bukan item menu.
sumber
android:itemTextAppearance
atribut tidak dapat ditempatkan dalam gaya yang induknya adalahparent="@android:style/Widget.Holo.ListPopupWindow"
karena itu tidak akan tersaji dengan baik. Itu harus dalam gaya tingkat atas seperti yang orang tuanyaandroid:Theme.Holo.Light.DarkActionBar
.Theme.Holo
atauTheme.Holo.Light.DarkActionBar
atau serupa.Anda dapat mengubah warna
MenuItem
teks dengan mudah menggunakanSpannableString
bukanString
.sumber
menu.findItem(R.id.menu_item_id);
bukanmenu.getItem()
Jika Anda menggunakan Bilah Alat baru, dengan tema
Theme.AppCompat.Light.NoActionBar
, Anda dapat menatanya dengan cara berikut.Menurut hasil yang saya dapatkan,
android:textColorPrimary
adalah warna teks yang menampilkan nama aktivitas Anda, yang merupakan teks utama dari toolbar.android:textColorSecondary
adalah warna teks untuk tombol subtitle dan lebih banyak opsi (3 titik). (Ya, warnanya berubah sesuai dengan properti ini!)android:textColor
Adalah warna untuk semua teks lainnya termasuk menu.Akhirnya atur tema ke Toolbar
sumber
android:actionMenuTextColor
(lihat stackoverflow.com/a/5538709/423105 ).Jika Anda menggunakan menu saat
<android.support.design.widget.NavigationView />
itu tambahkan saja baris di bawah ini diNavigationView
:Juga tersedia colorTint untuk ikon, itu akan menimpa warna untuk ikon Anda juga. Untuk itu Anda harus menambahkan baris di bawah ini:
Contoh:
Semoga ini bisa membantu Anda.
sumber
Saya menjalankannya secara terprogram seperti ini:
sumber
seperti yang Anda lihat dalam pertanyaan ini, Anda harus:
Kode di atas mengubah warna teks item tindakan menu untuk API> = v21.
Di atas adalah kode untuk API <v21
sumber
Saya menggunakan tag html untuk mengubah warna teks satu item ketika item menu meningkat. Semoga bermanfaat.
sumber
Cara SIMPLEST untuk membuat warna menu kustom untuk bilah alat tunggal, bukan untuk AppTheme
toolbar biasa di styles.xml
gaya bilah alat kustom kami
sumber
di Kotlin saya menulis ekstensi ini:
dan digunakan seperti ini:
sumber
Jawaban singkatnya adalah YA. Beruntunglah anda!
Untuk melakukannya, Anda perlu mengganti beberapa gaya gaya default Android:
Pertama, lihat definisi tema di Android:
Jadi, tampilan teks dalam menu ada di
@android:style/TextAppearance.Widget.IconMenu.Item
Sekarang, dalam definisi gaya :
Jadi sekarang kita memiliki nama warna yang dimaksud, jika Anda melihat di folder warna sumber daya sistem:
Akhirnya, inilah yang perlu Anda lakukan:
Ganti "TextAppearance.Widget.IconMenu.Item" dan buat gaya Anda sendiri. Kemudian tautkan ke pemilih Anda sendiri untuk membuatnya seperti yang Anda inginkan. Semoga ini bisa membantu Anda. Semoga berhasil!
sumber
Menu opsi di android dapat disesuaikan untuk mengatur latar belakang atau mengubah tampilan teks. Latar belakang dan warna teks dalam menu tidak dapat diubah menggunakan tema dan gaya. Kode sumber android (data \ res \ layout \ icon_menu_item_layout.xml) menggunakan item khusus dari kelas "com.android.internal.view.menu.IconMenuItem" Lihat untuk tata letak menu. Kita dapat membuat perubahan di kelas di atas untuk menyesuaikan menu. Untuk mencapai hal yang sama, gunakan kelas pabrik LayoutInflater dan atur warna latar belakang dan teks untuk tampilan.
sumber
03-23 19:45:25.134: E/AndroidRuntime(26761): java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
Terima kasih untuk contoh kode. Saya harus memodifikasinya, mulai bekerja dengan menu konteks. Ini solusi saya.
Bagi saya ini bekerja dengan Android 1.6, 2.03 dan 4.03.
sumber
saya menemukannya Eureka !!
dalam tema aplikasi Anda:
inilah tema bar tindakan Anda:
dan di sini adalah tema munculan Anda:
Bersulang ;)
sumber
untuk mengubah warna teks item menu gunakan kode di bawah ini
dimana
sumber
Berkat max.musterman, ini adalah solusi yang saya dapat gunakan di level 22:
Hardcoded
Color.BLACK
bisa menjadi parameter tambahan untuksetMenuTextColor
metode ini. Juga, saya hanya menggunakan ini untuk item menu yang sebelumnyaandroid:showAsAction="never"
.sumber
Anda dapat mengatur warna secara terprogram.
sumber
Menambahkan ini ke styles.xml saya berfungsi untuk saya
sumber
Cukup tambahkan ini ke tema Anda
Diuji pada API 21
sumber
<style name="AppTheme.ItemTextStyle" parent="@android:style/TextAppearance.Widget">
, jika tidak, teks muncul terlalu kecil di menu melimpah. Perhatikan juga bahwa teknik ini hanya berfungsi pada Android 5 dan di atasnya.sumber
Situasi saya adalah pengaturan warna teks di menu opsi (menu aplikasi utama ditampilkan pada tombol menu tekan).
Diuji dalam API 16 dengan pustaka appcompat-v7-27.0.2 ,
AppCompatActivity
untukMainActivity
danAppCompat
tema untuk aplikasi di AndroidManifest.xml .styles.xml :
Tidak tahu apakah itu
textColorSecondary
memengaruhi elemen lain tetapi itu mengontrol warna teks menu.Saya mencari beberapa contoh tentang topik ini tetapi semua cuplikan yang siap pakai tidak berfungsi.
Jadi saya ingin menyelidikinya dengan kode sumber untuk appcompat-v7 (khusus dengan folder res dari paket .aar ).
Meskipun dalam kasus saya, saya menggunakan Eclipse dengan meledak .aar dependensi . Jadi saya bisa mengubah gaya default dan memeriksa hasilnya. Tidak tahu cara meledakkan perpustakaan untuk digunakan dengan Gradle atau Android Studio secara langsung. Itu layak utas investigasi lainnya.
Jadi tujuan saya adalah mencari warna di file res / values / values.xml yang digunakan untuk teks menu (saya hampir yakin warnanya ada di sana).
#f00
nilai pada semuanya.secondary_text_default_material_light
item warna.@color/abc_secondary_text_material_light
.Base.ThemeOverlay.AppCompat.Light
danPlatform.AppCompat.Light
.android:textColorSecondary
danandroid:textColorTertiary
diBase.ThemeOverlay.AppCompat.Light
.android:textColorSecondary
.Theme.AppCompat.Light
dan bukanThemeOverlay.AppCompat.Light
).Base.ThemeOverlay.AppCompat.Light
. Itu punya anakThemeOverlay.AppCompat.Light
.ThemeOverlay.AppCompat.Light
Saya menemukan penggunaannya dalamBase.Theme.AppCompat.Light.DarkActionBar
tema sebagaiactionBarPopupTheme
atribut.Theme.AppCompat.Light.DarkActionBar
adalah anak dari yang ditemukanBase.Theme.AppCompat.Light.DarkActionBar
sehingga saya dapat menggunakan atribut itu di styles.xml saya tanpa masalah.ThemeOverlay.AppCompat.Light
dan mengubahandroid:textColorSecondary
atribut.sumber
Solusi Sephy tidak bekerja. Dimungkinkan untuk menimpa tampilan teks item menu pilihan menggunakan metode yang dijelaskan di atas, tetapi tidak item atau menu. Untuk melakukan itu pada dasarnya ada 3 cara:
Lihat Edisi 4441: Tema Menu Opsi Kustom untuk petunjuk lebih lanjut.
sumber
coba kode ini ....
sumber
java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
Jika Anda ingin mengatur warna untuk masing-masing item menu, menyesuaikan tema toolbar bukanlah solusi yang tepat. Untuk mencapai ini, Anda dapat menggunakan android: actionLayout dan tampilan tindakan untuk item menu.
Pertama buat file tata letak XML untuk tampilan tindakan. Dalam contoh ini kami menggunakan tombol sebagai tampilan aksi:
menu_button.xml
Dalam cuplikan kode di atas, kami menggunakan
android:textColor="?android:attr/colorAccent"
untuk menyesuaikan warna teks tombol.Kemudian dalam file tata letak XML Anda untuk menu, sertakan
app:actionLayout="@layout/menu_button"
seperti yang ditunjukkan di bawah ini:main_menu.xml
Terakhir timpa
onCreateOptionsMenu()
metode dalam aktivitas Anda:... atau fragmen:
Untuk detail lebih lanjut tentang tampilan tindakan, lihat panduan pengembang Android .
sumber
Ini adalah bagaimana Anda dapat mewarnai item menu tertentu dengan warna, berfungsi untuk semua level API:
Dengan melakukan itu Anda kehilangan efek pemilih latar belakang, jadi di sini adalah kode untuk menerapkan pemilih latar belakang kustom untuk semua item menu anak-anak.
Berikut adalah fungsi pembantu:
sumber
Untuk mengubah warna teks, Anda bisa mengatur tampilan kustom untuk MenuItem, dan kemudian Anda bisa menentukan warna untuk teks.
Kode Sampel: MenuItem.setActionView ()
sumber