web-dev-qa-db-ja.com

背景色のポップアップメニューを変更する方法android

データベースのクエリからメニューの各オプションを生成します。これが私のコードです。

final PopupMenu popupMenu = new PopupMenu(getBaseContext(), v); 
SQLiteDatabase db = AdapterDb.getReadableDatabase(); 
Cursor cursor = db.rawQuery(sql, null);
int ctritem = 0;
if (cursor.moveToFirst()) {
    popupMenu.getMenu().add(Menu.NONE, ctritem, Menu.NONE, "ALL ITEMS"); 
    do {
        ctritem++;   
        popupMenu.getMenu().add(Menu.NONE, ctritem, Menu.NONE, cursor.getString(0)); 
    } while (cursor.moveToNext());
}

すべては大丈夫ですが、問題はオプションメニューの色またはポップアップメニューの背景色を変更する方法です(黒から白に)、それは可能ですか?ありがとう

27
user3172337

PopMenuスタイルをur AppThemeに追加します。

<style name="AppTheme" parent="Android:Theme.Light">
    <item name="Android:popupMenuStyle">@style/PopupMenu</item>
</style>

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

manifest.xml:

 <application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme" >
.............
</application>
42
user543

スタイルxmlファイルに次の行を追加してください。これがマテリアルデザインアプリケーションに役立つことを願っています。 Style.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>

    <!-- To change the popup menu and app text color  -->
    <item name="Android:textColor">@color/colorPrimary</item>

    <!-- To change the background of options menu-->
    <item name="Android:itemBackground">@color/skyBlue</item>
</style>

詳細については、このリンクを参照してください http://www.viralandroid.com/2016/01/how-to-change-background-and-text-color-of-Android-actionbar-option-menu.html

11
MohanRaj S

AppCompact-v7を使用している場合、次のようにPopupMenuをスタイルできます。

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

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

注:PopMenuは、アプリケーションコンテキストではなく、常にアクティビティコンテキストで機能します。

9
Kalpesh

appCompatテーマを使用している場合は、

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

</style>

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

さもないと

<style name="AppTheme" parent="Android:Theme.Light">
    <item name="Android:popupMenuStyle">@style/PopupMenu</item>
</style>

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

</style>
5
user3024215

私の場合、最初にstyles.xmlファイルのポップアップメニューの背景のスタイルを定義します...

<style name="AppTheme" parent="Android:Theme.Holo.Light.DarkActionBar">
    <item name="Android:popupMenuStyle">@style/PopupMenu</item>
</style>
<style name="PopupMenu" parent="@Android:style/Widget.PopupMenu">
    <item name="Android:popupBackground">@Android:color/holo_green_light</item>
</style>

ここでは、特定のアクティビティのポップアップメニューの背景を変更したいので、アクティビティ宣言でtheme(Android:theme = "@ style/AppTheme")を適用すると、確実に機能します。このコードを使用してポップアップメニューを作成する別の重要なことPopupMenu popup = new PopupMenu(your activity、viewObj);

ツールバーを提供するレイアウトで、app:popupTheme = "@ style/MyPopupMenu"でテーマを指定します

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:minHeight="?attr/actionBarSize"
    Android:background="#2196F3"
    Android:layout_width="match_parent"
    Android:layout_height="?attr/actionBarSize"
    style="@style/DrawerArrowStyle"
    app:popupTheme="@style/MyPopupMenu">

</Android.support.v7.widget.Toolbar>
2
user2118561

スタイル内アプリケーションテーマ

 <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
     <!-- Customize your theme here. -->
 <item name="Android:itemBackground">@color/list_background</item>
 <item name="Android:itemTextAppearance">@style/MyActionBar.MenuTextStyle</item>
    </style>

テキスト表示用

 <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="background">@color/list_item_title</item>
        <item name="titleTextStyle">@style/MyActionBarTitle</item>
    </style>
    <style name="MyActionBarTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="Android:textColor">@color/list_item_title</item>
    </style>

    <style name="MyActionBar.MenuTextStyle"
        parent="style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="Android:textColor">@color/list_item_title</item>
        <item name="Android:textStyle">normal</item>
        <item name="Android:textSize">16sp</item>
        <item name="Android:gravity">center</item>
    </style>

およびメニフェストでアプリのテーマを使用する:

<application
        Android:name="Your Package"
        Android:allowBackup="true"
        Android:icon="@drawable/launcher_icon"
        Android:label="@string/app_name"
        Android:theme="@style/AppTheme" >
1
Droid_Mechanic

AppThemeにPopupMenuテーマを追加します。

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

<style name="PopupMenuTheme" parent="Theme.AppCompat.Light">
    <item name="Android:background">@Android:color/white</item>
</style>

manifest.xml:

<application
    ...
    Android:theme="@style/AppTheme">
    ...
</application>
1

詳細については、 PopupMenuのスタイル設定方法 を参照してください。私は同じ問題に直面していましたが、たくさん検索しましたが、言及されたリンクで解決策を見つけました。

PopupMenuは次の方法で作成されます。

PopupMenu popup = new PopupMenu(context, view);

PopupMenuは渡されたコンテキストのスタイルを取り、コンテキストが問題を解決したときにアクティビティを渡します。

1
Vaibhav Gupta
<style name="AppTheme1" parent= "Android:Theme.DeviceDefault">

    <item name="Android:actionBarPopupTheme">@style/popupNew</item>
</style>

<style name="popupNew" parent="Android:ThemeOverlay.Material.Light">
    <item name="Android:colorBackground">#ffffff</item>
</style>
0

これをstyle.xmlファイルに追加します

<style name="PopupMenu" parent="Theme.AppCompat.Light">
    <item name="Android:popupBackground">@Android:color/white</item>
</style>

スピナーでスタイルを設定する

<Spinner
Android:theme="@style/PopupMenu"
Android:popupMenuStyle="@style/PopupMenu"/>

これは、APIレベル16以上のデバイスでも機能します。

0