de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 MKD
MKD
Question

Cara untuk mengubah warna latar belakang dari Tindakan Bar's Pilihan Menu di Android 4.2?

I'd seperti untuk mengubah warna latar belakang pilihan (overflow) menu di Android 4.2. Saya telah mencoba semua metode tapi itu masih menunjukkan warna default yang ditetapkan oleh tema. Saya menggunakan kode berikut & XML konfigurasi.

MainActivity.java

public class MainActivity extends Activity {

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getActionBar().setIcon(R.drawable.ic_launcher);     
    getActionBar().setTitle("Sample Menu");
    getActionBar().setBackgroundDrawable(new 
               ColorDrawable(Color.parseColor("#33B5E5"))); 

    int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
    TextView titleText = (TextView)findViewById(titleId);
    titleText.setTextColor(Color.parseColor("#ffffff"));

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    setMenuBackground();
    return true;
}

protected void setMenuBackground(){                     
    // Log.d(TAG, "Enterting setMenuBackGround");  
    getLayoutInflater().setFactory( new Factory() { 

        @Override
        public View onCreateView(String name, Context context,
                AttributeSet attrs) {
            if ( name.equalsIgnoreCase( "com.android.internal.view.menu.IconMenuItemView" ) ) {
                try { // Ask our inflater to create the view  
                    LayoutInflater f = getLayoutInflater();  
                    final View view = f.createView( name, null, attrs );  
                    /* The background gets refreshed each time a new item is added the options menu.  
                    * So each time Android applies the default background we need to set our own  
                    * background. This is done using a thread giving the background change as runnable 
                    * object */
                    new Handler().post( new Runnable() {  
                        public void run () {  
                            // sets the background color   
                            view.setBackgroundResource( R.color.menubg);
                            // sets the text color              
                            ((TextView) view).setTextColor(Color.WHITE);
                            // sets the text size              
                            ((TextView) view).setTextSize(18);
            }
                    } );  
                return view;
            }
        catch ( InflateException e ) {}
        catch ( ClassNotFoundException e ) {}  
    } 
            return null;
        }});
}

}

Menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/action_settings"
    android:icon="@drawable/menu"
    android:showAsAction="always"
    android:title="@string/action_settings">
    <menu>
        <item
            android:id="@+id/item1"               
            android:showAsAction="always"
            android:title="@string/item1" />
        <item
            android:id="@+id/item2"               
            android:showAsAction="always"
            android:title="@string/item2" />
        <item
            android:id="@+id/item3"
            android:showAsAction="always"
            android:title="@string/item3" />
        <item
            android:id="@+id/item4"
            android:showAsAction="always"
            android:title="@string/item4" />
    </menu>
</item>

</menu>

color.xml

<color name="menubg">#33B5E5</color>

Di atas setMenuBackground tidak mengambil efek:

Menu Sample

Pada gambar di atas, saya ingin mengubah menu latar belakang dari warna hitam ke warna biru di Bar Tindakan. Bagaimana saya bisa mencapai ini, dan apa yang saya lakukan salah?

66 2013-10-29T13:31:25+00:00 16
 Jonik
Jonik
Pertanyaan edit 19 November 2013 в 10:51
Pemrograman
android
android-actionbar
android-theme
android-4.2-jelly-bean
android-menu
 Jonik
Jonik
19 November 2013 в 4:53
2013-11-19T16:53:40+00:00
Lebih
Sumber
Sunting
#22654693

The Aksi Bar Style Generator, disarankan oleh Sunny, adalah sangat berguna, tetapi menghasilkan banyak dari file, yang sebagian besar tidak relevan jika anda hanya ingin mengubah warna latar belakang.

Jadi, saya menggali lebih dalam ke dalam kantong itu menghasilkan, dan mencoba untuk mempersempit apa saja bagian-bagian yang penting, sehingga saya dapat membuat jumlah minimum dari perubahan untuk aplikasi saya. Di bawah ini adalah apa yang saya temukan.


Dalam gaya generator, setelan yang relevan adalah Popup warna, yang mempengaruhi "Overflow menu, submenu dan spinner panel latar belakang".

Pergi dan menghasilkan zip, tapi dari semua file yang dihasilkan, anda hanya benar-benar membutuhkan satu gambar, menu_dropdown_panel_example.9.png, yang terlihat seperti ini:

Jadi, tambahkan resolusi yang berbeda versi dari itu untuk res/drawable-*. (Dan mungkin mengubah nama mereka untuk menu_dropdown_panel.9.png.)

Maka, sebagai contoh, dalam res/values/themes.xml anda akan memiliki yang berikut, dengan android:popupMenuStyle dan android:popupBackground menjadi kunci pengaturan.

<resources>

    <style name="MyAppActionBarTheme" parent="android:Theme.Holo.Light">
        <item name="android:popupMenuStyle">@style/MyApp.PopupMenu</item>
        <item name="android:actionBarStyle">@style/MyApp.ActionBar</item>
    </style>

    <!-- The beef: background color for Action Bar overflow menu -->
    <style name="MyApp.PopupMenu" parent="android:Widget.Holo.Light.ListPopupWindow">
        <item name="android:popupBackground">@drawable/menu_dropdown_panel</item>
    </style>

    <!-- Bonus: if you want to style whole Action Bar, not just the menu -->
    <style name="MyApp.ActionBar" parent="android:Widget.Holo.Light.ActionBar.Solid">
        <!-- Blue background color & black bottom border -->
        <item name="android:background">@drawable/blue_action_bar_background</item>
    </style>   

</resources>

Dan, tentu saja, dalam AndroidManifest.xml:

<application
    android:theme="@style/MyAppActionBarTheme" 
    ... >

Apa yang anda dapatkan dengan setup ini:

Perhatikan bahwa I'm menggunakan Tema.Holo.Cahaya sebagai dasar tema. Jika anda menggunakan Tema.Holo (Holo Gelap), ada's langkah tambahan yang diperlukan sebagai jawaban ini menggambarkan!

Juga, jika anda (seperti saya) ingin gaya seluruh Tindakan Bar, bukan hanya menu, menempatkan sesuatu seperti ini dalam res/drawable/blue_action_bar_background.xml:

<!-- Bonus: if you want to style whole Action Bar, not just the menu -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="rectangle">
            <stroke android:width="2dp" android:color="#FF000000" />
            <solid android:color="#FF2070B0" />                   
        </shape>
    </item>

    <item android:bottom="2dp">
        <shape android:shape="rectangle">
            <stroke android:width="2dp" android:color="#FF2070B0" />
            <solid android:color="#00000000" />
            <padding android:bottom="2dp" />
        </shape>
    </item>

</layer-list>

Karya besar setidaknya pada Android 4.0 (API 14 tingkat+).

 Community
Community
Jawaban edit 23 Mei 2017 в 12:34
Android Action Bar Style Generator
jgilfelt.github.io
88
0
 Nicks
Nicks
1 September 2015 в 5:45
2015-09-01T05:45:25+00:00
Lebih
Sumber
Sunting
#22654701

Dalam kasus orang-orang yang masih berada di untuk solusi yang bekerja, di sini adalah apa yang bekerja untuk saya: - Ini adalah untuk Appcompat dukungan perpustakaan. Ini adalah kelanjutan untuk styling ActionBar dijelaskan di sini

Berikut adalah styles.xml file.

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- This is the styling for action bar -->
        <item name="actionBarStyle">@style/MyActionBar</item>
        <!--To change the text styling of options menu items</item>-->
        <item name="android:itemTextAppearance">@style/MyActionBar.MenuTextStyle</item>
        <!--To change the background of options menu-->
        <item name="android:itemBackground">@color/skyBlue</item>
    </style>

    <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="background">@color/red</item>
        <item name="titleTextStyle">@style/MyActionBarTitle</item>
    </style>

    <style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/white</item>
    </style>

    <style name="MyActionBar.MenuTextStyle"
        parent="style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/red</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">25sp</item>
    </style>
</resources>

dan ini adalah bagaimana hal itu tampak--MenuItem latar belakang warna biru langit dan MenuItem teks warna merah muda dengan textsize sebagai 25sp:--

 Community
Community
Jawaban edit 23 Mei 2017 в 11:33
85
0
Solution / Answer
 Sunny
Sunny
29 Oktober 2013 в 1:36
2013-10-29T13:36:43+00:00
Lebih
Sumber
Sunting
#22654692

Ada cara mudah untuk mengubah warna Actionbar Gunakan ActionBar Generator dan copy paste semua file di res folder dan mengubah tema di Android.file manifest.

Android Action Bar Style Generator
jgilfelt.github.io
20
0
 rupps
rupps
28 Maret 2014 в 5:08
2014-03-28T05:08:46+00:00
Lebih
Sumber
Sunting
#22654696

Jika anda membaca ini, it's mungkin karena semua jawaban sebelumnya tidak't bekerja untuk anda Holo Gelap berdasarkan tema.

Holo Gelap menggunakan tambahan pembungkus untuk PopupMenus, jadi setelah melakukan apa yang Jonik menyarankan anda harus menambahkan kode berikut gaya 'xml' file:

<style name="PopupWrapper" parent="@android:style/Theme.Holo">
    <item name="android:popupMenuStyle">@style/YourPopupMenu</item>
</style>

Kemudian referensi anda dalam tema blok:

<style name="Your.cool.Theme" parent="@android:style/Theme.Holo">
    .
    .
    .
    <item name="android:actionBarWidgetTheme">@style/PopupWrapper</item>
</style>

Yang's itu!

 Community
Community
Jawaban edit 23 Mei 2017 в 11:55
17
0
 aLIEz
aLIEz
30 Juni 2014 в 1:20
2014-06-30T13:20:56+00:00
Lebih
Sumber
Sunting
#22654697

Saya trik sederhana untuk mengubah warna latar belakang dan warna teks pada Popup Menu / Menu Pilihan

<style name="CustomActionBarTheme"
       parent="@android:style/Theme.Holo">
    <item name="android:popupMenuStyle">@style/MyPopupMenu</item>
    <item name="android:itemTextAppearance">@style/TextAppearance</item>
</style>
<!-- Popup Menu Background Color styles -->
<style name="MyPopupMenu" 
       parent="@android:style/Widget.Holo.ListPopupWindow">
    <item name="android:popupBackground">@color/Your_color_for_background</item> 
</style>
<!-- Popup Menu Text Color styles -->
<style name="TextAppearance">
    <item name="android:textColor">@color/Your_color_for_text</item>
</style>
15
0
 Rishab
Rishab
31 Januari 2017 в 12:17
2017-01-31T12:17:10+00:00
Lebih
Sumber
Sunting
#22654702

Dalam kasus anda bekerja di terbaru toolbar di android studio maka di sini adalah yang terkecil solusi Untuk mengubah toolbar menu pilihan warna, tambahkan ke toolbar elemen

 app:popupTheme="@style/MyDarkToolbarStyle"

Kemudian pada anda styles.xml menentukan popup menu style

`<nama style="MyDarkToolbarStyle" orang tua="ThemeOverlay.AppCompat.Cahaya">

<nama barang="android:colorBackground">@color/mtrl_white_100 <nama barang="android:textColor">@color/mtrl_light_blue_900 `

Perhatikan bahwa anda perlu menggunakan colorBackground bukan latar belakang. Yang terakhir akan diterapkan untuk segala sesuatu (menu itu sendiri dan masing-masing item menu), mantan hanya berlaku untuk menu popup.

3
0
Gowsik Raja
Gowsik Raja
30 Juni 2017 в 10:37
2017-06-30T10:37:43+00:00
Lebih
Sumber
Sunting
#22654703

I'm juga dipukul dengan masalah yang sama, akhirnya saya punya solusi sederhana. hanya menambahkan satu baris untuk tindakan bar gaya.

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">@color/colorAccent</item>
    <item name="android:colorBackground">@color/colorAppWhite</item>
</style>

"android:colorBackground" cukup untuk mengubah pilihan menu latar belakang

3
0
Soon Santos
Soon Santos
19 Januari 2018 в 4:07
2018-01-19T16:07:09+00:00
Lebih
Sumber
Sunting
#22654705

Cara CEPAT!

styles.xml

<style name="popupTheme" parent="Theme.AppCompat.Light">

    <item name="android:background">@color/colorBackground</item>
    <item name="android:textColor">@color/colorItem</item>

</style>

Kemudian tambahkan ini gaya tertentu untuk anda AppTheme gaya

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
    <item name="popupTheme">@style/popupTheme</item>
</style>

SELESAI!

3
0
Tejas Mehta
Tejas Mehta
6 November 2014 в 10:31
2014-11-06T10:31:36+00:00
Lebih
Sumber
Sunting
#22654699

Anda dapat menerapkan gaya dan Tema yang di Meluap MenuItem sesuai di bawah ini. Menu OverFlow adalah ListView jadi, kita dapat menerapkan tema sesuai listview.

Terapkan kode di bawah ini di styles.xml

<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:dropDownListViewStyle">@style/PopupMenuListView</item>
        <item name="android:actionBarWidgetTheme">@style/PopupMenuTextView</item>
        <item name="android:popupMenuStyle">@style/PopupMenu</item>
        <item name="android:listPreferredItemHeightSmall">40dp</item>
</style>

<!-- Change Overflow Menu ListView Divider Property -->
    <style name="PopupMenuListView" parent="@android:style/Widget.Holo.ListView.DropDown">
        <item name="android:divider">@color/app_navigation_divider</item>
        <item name="android:dividerHeight">1sp</item>
        <item name="android:listSelector">@drawable/list_selector</item>
    </style>

    <!-- Change Overflow Menu ListView Text Size and Text Size -->
    <style name="PopupMenuTextView" parent="@android:style/Widget.Holo.Light.TextView">
        <item name="android:textColor">@color/app_white</item>
        <item name="android:textStyle">normal</item>
        <item name="android:textSize">18sp</item>
        <item name="android:drawablePadding">25dp</item>
        <item name="android:drawableRight">@drawable/navigation_arrow_selector</item>
    </style>

    <!-- Change Overflow Menu Background -->
    <style name="PopupMenu" parent="android:Widget.Holo.Light.ListPopupWindow">
        <item name="android:popupBackground">@drawable/menu_overflow_bg</item>
    </style>
3
0
 Rishabh
Rishabh
30 Januari 2014 в 1:45
2014-01-30T13:45:00+00:00
Lebih
Sumber
Sunting
#22654694

Saya bisa mengubah warna dari tindakan yang melimpah hanya dengan memasukkan nilai hex pada:

    <!-- The beef: background color for Action Bar overflow menu -->
<style name="MyApp.PopupMenu" parent="android:Widget.Holo.Light.ListPopupWindow">
    <item name="android:popupBackground">HEX VALUE OF COLOR</item>
</style>
2
0
Tyler Devenere
Tyler Devenere
4 November 2018 в 8:35
2018-11-04T08:35:10+00:00
Lebih
Sumber
Sunting
#22654707

Dalam aplikasi tema, anda dapat mengatur android:itemBackground properti untuk mengubah warna dari menu tindakan.

Misalnya:

<style name="AppThemeDark" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/drk_colorPrimary</item>
        <item name="colorPrimaryDark">@color/drk_colorPrimaryDark</item>
        <item name="colorAccent">@color/drk_colorAccent</item>
        <item name="actionBarStyle">@style/NoTitle</item>
        <item name="windowNoTitle">true</item>
        <item name="android:textColor">@color/white</item>

        <!-- THIS IS WHERE YOU CHANGE THE COLOR -->
        <item name="android:itemBackground">@color/drk_colorPrimary</item>
</style>
2
0
Keyur Sureliya
Keyur Sureliya
26 Januari 2018 в 7:16
2018-01-26T19:16:40+00:00
Lebih
Sumber
Sunting
#22654706

Tambahkan berikut ini untuk anda Styles.xml

<style name="Custom_Theme" parent="Theme.AppCompat.Light.DarkActionBar">

    <item name="android:itemBackground">@color/white</item>
    <item name="android:textColor">@color/colorPrimaryDark</item>

</style>

Mengubah tema di activity_main.xml hanya.

android:theme="@style/Custom_Theme"
Jules Dupont
Jules Dupont
Jawaban edit 26 Januari 2018 в 9:43
1
0
 Niranjan
Niranjan
31 Oktober 2014 в 10:09
2014-10-31T10:09:38+00:00
Lebih
Sumber
Sunting
#22654698

Coba kode ini. Tambahkan potongan ini untuk anda res>nilai>styles.xml

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:actionBarWidgetTheme">@style/Theme.stylingactionbar.widget</item>
</style>
<style name="PopupMenu" parent="@android:style/Widget.Holo.ListPopupWindow">
    <item name="android:popupBackground">@color/DarkSlateBlue</item>
 <!-- for @color you have to create a color.xml in res > values -->
</style>
<style name="Theme.stylingactionbar.widget" parent="@android:style/Theme.Holo">
    <item name="android:popupMenuStyle">@style/PopupMenu</item>
</style>

Dan di Manifest.xml tambahkan berikut cuplikan di bawah aplikasi

 <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"

     android:theme="@style/AppTheme"  >
1
0
 user8397875
user8397875
6 Maret 2019 в 12:54
2019-03-06T12:54:30+00:00
Lebih
Sumber
Sunting
#22654708

Saya menggunakan ini dan itu bekerja dengan baik.

Menerapkan kode ini di onCreate() fungsi

val actionBar: android.support.v7.app.ActionBar? = supportActionBar
    actionBar?.setBackgroundDrawable(ColorDrawable(Color.parseColor("Your color code here")))    
0
0
Саша Серегин
Саша Серегин
3 September 2017 в 2:42
2017-09-03T14:42:42+00:00
Lebih
Sumber
Sunting
#22654704
<style name="customTheme" parent="any_parent_theme">
    <item name="android:itemBackground">#424242</item>
    <item name="android:itemTextAppearance">@style/TextAppearance</item>
</style>

<style name="TextAppearance">
    <item name="android:textColor">#E9E2BF</item>
</style>
0
0
Pawan Maheshwari
Pawan Maheshwari
21 Februari 2014 в 8:17
2014-02-21T08:17:35+00:00
Lebih
Sumber
Sunting
#22654695

Berikut ini adalah perubahan-perubahan yang diperlukan dalam tema anda untuk mengubah tindakan bar & overflow menu warna latar belakang. Anda perlu mengkonfigurasi "android:latar belakang" dari actionBarStyle & popupMenuStyle

<application
            android:name="...."
            android:theme="@style/AppLightTheme">

<style name="AppLightTheme" parent="android:Theme.Holo.Light">      
        <item name="android:actionBarStyle">@style/ActionBarLight</item>
        <item name="android:popupMenuStyle">@style/ListPopupWindowLight</item>
</style>

<style name="ActionBarLight" parent="android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">@color/white</item>
</style>

<style name="ListPopupWindowLight"parent="@android:style/Widget.Holo.Light.ListPopupWindow">
        <item name="android:background">@color/white</item>
</style>
0
0
Related communities 1
Android Studio Indonesia
Android Studio Indonesia
1 778 pengguna
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 1 hari yang lalu
2
Akshit Mehta
Terdaftar 4 hari yang lalu
3
me you
Terdaftar 1 minggu yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
JA
KO
TR
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi