it-swarm.com.de

Wie man das Popup-Menü für die Hintergrundfarbe ändert

Ich generiere jede Menüoption durch Abfragen der Datenbank ..__ Hier ist mein Code.

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());
}

Alles ist in Ordnung, aber das Problem ist, wie man die Farbe des Optionsmenüs oder die Hintergrundfarbe des Popup-Menüs ändert (von Schwarz auf Weiß)

22
user3172337

Fügen Sie popupMenu-Stil zu Ihrem AppTheme hinzu:

<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>
35
user543

Bitte fügen Sie die folgenden Zeilen in der Style-XML-Datei hinzu. Ich hoffe, dies hilft bei der Materialdesign-Anwendung .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>

Weitere Informationen finden Sie unter diesem Link http://www.viralandroid.com/2016/01/wie-der-wechseln-des-hintergrund-und-text-farben-von-Android-Aktivitätsoptionsmenü.html

8
MohanRaj S

Wenn Sie AppCompact-v7 verwenden, können Sie PopupMenu wie folgt formatieren:

 <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>

HINWEIS: PopMenu arbeitet immer mit Aktivitätskontext, nicht mit Anwendungskontext. 

8
Kalpesh

wenn Sie ein AppCompat-Design verwenden, verwenden Sie

<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>

andernfalls

<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>
4
user3024215

definieren Sie zunächst Ihren Stil für das Popup-Menü in der Datei styles.xmlin meinem Fall verwende ich diese ...

<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>

hier möchte ich das Popup-Menü in einer bestimmten Aktivität ändern. Wenden Sie das Thema (Android: theme = "@ style/AppTheme") mit Aktivitätsdeklaration an, und es funktioniert sicherlich .. ... Eine weitere wichtige Sache zum Erstellen eines Popup-Menüs mit diesem Code PopupMenu popup = new PopupMenu (Ihre Aktivität, viewObj);

Geben Sie in dem Layout, in dem Sie die Symbolleiste angeben, das Design per App an: 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="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

Fügen Sie dies Ihrer style.xml-Datei hinzu

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

Legen Sie den Stil auf Spinner fest

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

Dies würde auch für Geräte mit API Level 16 und höher funktionieren.

0

In Style Ihr Anwendungsthema

 <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>

Für Textdarstellung

 <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>

Und verwenden Sie App-Thema in Manifest wie:

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

Fügen Sie Ihrem AppTheme PopupMenu-Design hinzu:

<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>
0

Bitte beachten Sie Wie stelle ich PopupMenu ein? für weitere Erklärung. Ich war mit dem gleichen Problem konfrontiert, suchte eine Menge, fand aber die Lösung in dem erwähnten Link.

PopupMenu wird auf folgende Weise erstellt:

PopupMenu popup = new PopupMenu(context, view);

PopupMenu nimmt den Stil des übergebenen Kontextes an, und Passing Activity als Kontext löste mein Problem.

0
Vaibhav Gupta