web-dev-qa-db-ja.com

ActionBarメニューの背景色を変更する方法(Android 4および5)

Androidデザインを変更しているときに問題が発生しました。アクションバーメニューの背景色を黒に変更する必要があります。この質問にはたくさんの答えがあります。たくさん試してみました。しかし、私には何もうまくいきませんでした。

ああ、私が言うのを忘れていたので、私はそれほど熟練していませんAndroid開発者です。これが私のスタイルファイル(v21)です。

<?xml version="1.0" encoding="utf-8"?>
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
    <item name="colorPrimary">@color/mainColor</item>
    <item name="colorPrimaryDark">@color/secondaryColor</item>
    <item name="colorAccent">@color/goldColor</item>
    <item name="colorControlNormal">@color/mainColor</item>
    <item name="colorControlActivated">@color/secondaryColor</item>
    <item name="colorControlHighlight">@color/secondaryColor</item>
    <item name="Android:navigationBarColor">@color/blackColor</item>
    <item name="colorSwitchThumbNormal">@color/secondaryTextColor</item>
    <item name="Android:windowContentOverlay">@null</item>
    <item name="Android:textColorPrimary">@color/goldColor</item>
    <item name="Android:windowBackground">@color/blackColor</item>
    <item name="Android:itemTextAppearance">@color/normalTextColor</item>
    <item name="Android:buttonStyle">@style/ButtonStyle</item>
    <item name="Android:actionMenuTextColor">@color/blackColor</item>
    <item name="actionMenuTextColor">@color/blackColor</item>
    <item name="Android:actionBarPopupTheme">@style/Theme.Red.Widget</item>
    <item name="Android:popupTheme">@color/blackColor</item>
</style>


<style name="Theme.Red.Widget" parent="@style/Theme.AppCompat">
    <item name="popupMenuStyle">@style/PopupMenu.Red</item>
    <item name="dropDownListViewStyle">@style/DropDownListView.Red</item>
</style>

<style name="PopupMenu.Red" parent="@style/Widget.AppCompat.PopupMenu">
    <item name="Android:popupBackground">@color/blackColor</item>
</style>

<style name="DropDownListView.Red" parent="@style/Widget.AppCompat.ListView.DropDown">
    <item name="Android:listSelector">@color/blackColor</item>
</style>

<color name="mainColor">#373737</color>
<color name="secondaryColor">#252525</color>
<color name="goldColor">#cea939</color>
<style name="Divider">
    <item name="Android:layout_width">match_parent</item>
    <item name="Android:layout_height">1dp</item>
    <item name="Android:background">?android:attr/listDivider</item>
</style>
<style name="ButtonStyle" parent="Android:Widget.Button">
    <item name="Android:background">@drawable/custom_btn</item>
</style>

そして、これがより低いAndroidリリースの私のコードです。

<resources>

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
    <item name="colorPrimary">@color/mainColor</item>
    <item name="colorPrimaryDark">#856f2d</item>
    <item name="colorAccent">@color/mainColor</item>
    <item name="colorControlNormal">@color/mainColor</item>
    <item name="colorControlActivated">#856f2d</item>
    <item name="colorControlHighlight">#856f2d</item>
    <item name="colorSwitchThumbNormal">@color/mainColor</item>
    <item name="Android:windowContentOverlay">@null</item>
    <item name="Android:textColorPrimary">@color/blackColor</item>
    <item name="Android:textColorSecondary">@color/blackColor</item>
    <item name="Android:textColorTertiary">@color/blackColor</item>
    <item name="Android:windowBackground">@color/backgroundColor</item>
    <item name="Android:itemTextAppearance">@color/normalTextColor</item>

    <item name="Android:editTextBackground">@drawable/apptheme_edit_text_holo_light</item>
    <item name="Android:textColorHighlight">#99cea939</item>
    <item name="Android:textSelectHandleLeft">@drawable/apptheme_text_select_handle_left</item>
    <item name="Android:textSelectHandleRight">@drawable/apptheme_text_select_handle_right</item>
    <item name="Android:textSelectHandle">@drawable/apptheme_text_select_handle_middle</item>
    <item name="Android:autoCompleteTextViewStyle">@style/AutoCompleteTextViewAppTheme</item>
    <item name="Android:listChoiceIndicatorMultiple">@drawable/apptheme_btn_check_holo_light</item>
    <item name="Android:listChoiceIndicatorSingle">@drawable/apptheme_btn_radio_holo_light</item>
    <item name="Android:buttonStyle">@style/ButtonAppTheme</item>
    <item name="Android:imageButtonStyle">@style/ImageButtonAppTheme</item>
    <item name="Android:dropDownSpinnerStyle">@style/SpinnerAppTheme</item>
    <item name="Android:progressBarStyleHorizontal">@style/ProgressBarAppTheme</item>
    <item name="Android:seekBarStyle">@style/SeekBarAppTheme</item>
    <item name="Android:ratingBarStyle">@style/RatingBarAppTheme</item>
    <item name="Android:ratingBarStyleIndicator">@style/RatingBarBigAppTheme</item>
    <item name="Android:ratingBarStyleSmall">@style/RatingBarSmallAppTheme</item>
    <item name="Android:buttonStyleToggle">@style/ToggleAppTheme</item>
    <item name="Android:listChoiceBackgroundIndicator">@drawable/apptheme_list_selector_holo_light</item>
    <item name="Android:activatedBackgroundIndicator">@drawable/apptheme_activated_background_holo_light</item>
    <item name="Android:fastScrollThumbDrawable">@drawable/apptheme_fastscroll_thumb_holo</item>

</style>

<style name="SettingsToolbarTheme" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="Android:textColorPrimary">@color/goldColor</item>
    <item name="actionMenuTextColor">@color/abc_primary_text_material_light</item>
    <item name="Android:textColorSecondary">@color/goldColor</item>
</style>

<style name="Divider">
    <item name="Android:layout_width">match_parent</item>
    <item name="Android:layout_height">1dp</item>
    <item name="Android:background">?android:attr/listDivider</item>
</style>
<style name="AutoCompleteTextViewAppTheme" parent="Android:Widget.Holo.Light.AutoCompleteTextView">
    <item name="Android:dropDownSelector">@drawable/apptheme_list_selector_holo_light</item>
    <item name="Android:background">@drawable/apptheme_edit_text_holo_light</item>
</style>
<style name="ButtonAppTheme" parent="Android:Widget.Holo.Light.Button">
    <item name="Android:background">@drawable/apptheme_btn_default_holo_light</item>
</style>
<style name="ImageButtonAppTheme" parent="Android:Widget.Holo.Light.ImageButton">
    <item name="Android:background">@drawable/apptheme_btn_default_holo_light</item>
</style>
<style name="SpinnerAppTheme" parent="Android:Widget.Holo.Light.Spinner">
    <item name="Android:background">@drawable/apptheme_spinner_background_holo_light</item>
    <item name="Android:dropDownSelector">@drawable/apptheme_list_selector_holo_light</item>
</style>
<style name="TabAppTheme">
    <item name="Android:gravity">center_horizontal</item>
    <item name="Android:paddingLeft">16dip</item>
    <item name="Android:paddingRight">16dip</item>
    <item name="Android:background">@drawable/apptheme_tab_indicator_holo</item>
    <item name="Android:layout_width">0dip</item>
    <item name="Android:layout_weight">1</item>
    <item name="Android:minWidth">80dip</item>
</style>
<style name="TabTextAppTheme">
    <item name="Android:textColor">#000000</item>
    <item name="Android:textSize">12sp</item>
    <item name="Android:textStyle">bold</item>
    <!-- v14 <item name="Android:textAllCaps">true</item> -->
    <item name="Android:ellipsize">Marquee</item>
    <item name="Android:maxLines">2</item>
    <item name="Android:maxWidth">180dip</item>
</style>
<style name="ProgressBarAppTheme" parent="Android:Widget.Holo.Light.ProgressBar.Horizontal">
    <item name="Android:progressDrawable">@drawable/apptheme_progress_horizontal_holo_light</item>
    <item name="Android:indeterminateDrawable">@drawable/apptheme_progress_indeterminate_horizontal_holo_light</item>
</style>
<style name="SeekBarAppTheme" parent="Android:Widget.Holo.Light.SeekBar">
    <item name="Android:progressDrawable">@drawable/apptheme_scrubber_progress_horizontal_holo_light</item>
    <item name="Android:indeterminateDrawable">@drawable/apptheme_scrubber_progress_horizontal_holo_light</item>
    <item name="Android:thumb">@drawable/apptheme_scrubber_control_selector_holo_light</item>
</style>
<style name="RatingBarAppTheme" parent="Android:Widget.Holo.Light.RatingBar">
    <item name="Android:progressDrawable">@drawable/apptheme_ratingbar_full_holo_light</item>
    <item name="Android:indeterminateDrawable">@drawable/apptheme_ratingbar_full_holo_light</item>
</style>
<style name="RatingBarBigAppTheme" parent="Android:Widget.Holo.Light.RatingBar.Indicator">
    <item name="Android:progressDrawable">@drawable/apptheme_ratingbar_holo_light</item>
    <item name="Android:indeterminateDrawable">@drawable/apptheme_ratingbar_holo_light</item>
</style>
<style name="RatingBarSmallAppTheme" parent="Android:Widget.Holo.Light.RatingBar.Small">
    <item name="Android:progressDrawable">@drawable/apptheme_ratingbar_small_holo_light</item>
    <item name="Android:indeterminateDrawable">@drawable/apptheme_ratingbar_small_holo_light</item>
</style>
<style name="ToggleAppTheme" parent="Android:Widget.Holo.Light.Button.Toggle">
    <item name="Android:background">@drawable/apptheme_btn_toggle_holo_light</item>
</style>

助けてくれてありがとう。

12
Stepan Mazokha

actionOverflowMenuStyleアイテムをアプリのテーマに追加する

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="actionOverflowMenuStyle">@style/CMOptionsMenu</item>
    </style>


<style name="CMOptionsMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
     <item name="Android:popupBackground">your color code</item>
</style>
42

メニューの背景色/ドロップダウン/スピナー

いくつかのオプションの1つ:

編集styles.xml

<resources>
<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="Android:popupMenuStyle">@style/PopupMenu</item>
        <item name="Android:popupBackground">#272727</item>
        <item name="Android:itemBackground">#cc9d3e</item>
</style>

このようにres/menu /の下にpopup_menu.xmlを作成します。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:layout_width="32dp"
Android:tint="@color/timeSettings"
app:popupTheme="@style/PopupMenu">

<item
    Android:id="@+id/min0"
    Android:orderInCategory="100"
    Android:title="0"
    app:showAsAction="never" />

</menu>

Java-fileのpopupMenuを編集します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_clock);

    //Time
    secBtn = (Button) findViewById(R.id.btn_sec);
    secBtn.setText("00");
    //levelBtn.setTypeface(tf1);
    secBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PopupMenu popupMenu = new PopupMenu(MainActivityClock.this, secBtn);
            popupMenu.getMenuInflater().inflate(R.menu.popup_menu_sec, popupMenu.getMenu());
            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    //Toast.makeText(MainActivity.this, "" + item.getTitle(), Toast.LENGTH_SHORT).show();
                    secBtn.setText("" + item.getTitle());
                    workTime_sec = Integer.parseInt(item.getTitle().toString());
                    //sec = item.getTitle().toString();
                    System.out.println("workTime_sec: " + workTime_sec);
                    return true;
                }
            });
            popupMenu.show();
        }
    });
}

enter image description here

3
mitch mkrtchian

次のように行を追加するだけです。

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

    <!-- To change the background of options menu-->
    <item name="Android:itemBackground">*Your_color*</item>

</style>
2
Safal Sharma

Rakesh Kalashettiの答えは小さな変更で私のために働きました-actionOverflowMenuStyleの前にAndroid:名前空間を付ける必要があります。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  <item name="Android:actionOverflowMenuStyle">@style/CMOptionsMenu</item>
</style>


<style name="CMOptionsMenu" parent="Widget.AppCompat.PopupMenu.Overflow">
  <item name="Android:popupBackground">your color code</item>
</style>
0
Pavel Bazika