Styling Sherlock Action Bar Drop-Down-Elemente

Ich habe versucht, für eine Weile, um die Elemente in einer Dropdown-Liste, die ich hinzugefügt, um die Action Bar, aber ich kann nicht kommen mit dem richtigen Code.

Ich habe versucht, in die abs__styles.xml und abs__themes.xml im SherlockActionBar Projekt zu abs__themes.xml aber keiner der Artikel, die ich meinem Projekt hinzugefügt habe, funktionierte.

  • Android Sherlock ActionBar Up Schaltfläche
  • ActionBarSherlock - Zeigt übergefüllte Aktionselemente als Symbol + Text an
  • Einstellung ActionBarSherlock Theme für Android App
  • ActionBarSherlock SearchView ist ein Fehler
  • Entfernen Sie die Aktionsleiste auf den blauen Hintergrund
  • Warum sind meine Fragmente onSaveInstanceState () nicht aufgerufen?
  • Die Art, wie ich die Menüs kreiere, ist folgende:

     @Override public boolean onCreateOptionsMenu(Menu menu) { // Sharing icons SubMenu submenu = menu.addSubMenu(null); submenu.add(getResources().getString(R.string.twitter)); submenu.add(getResources().getString(R.string.facebook)); submenu.add(getResources().getString(R.string.email)); // Share button itself MenuItem ShareButton = submenu.getItem(); ShareButton.setIcon(R.drawable.icon_share_triangle); ShareButton.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); // Twitter submenu button MenuItem TwitterItem = submenu.getItem(0); TwitterItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); TwitterItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { setShareTwitterIntent(); return true; } }); ... } 

    Ich habe auch versucht, einen Blick auf diesen Beitrag mit dem folgenden Code, aber immer noch kein Glück:

     <!-- style the list navigation --> <style name="MyDropDownNav" parent="android:style/Widget.Holo.Light.Spinner.DropDown.ActionBar"> <item name="android:background">@drawable/ad_spinner_background_holo_light</item> <item name="android:popupBackground">@drawable/ad_menu_dropdown_panel_holo_light</item> <item name="android:dropDownSelector">@drawable/ad_selectable_background</item> </style> 

    Ich muss nur die Hintergrundfarbe der Elemente in der Dropdown-Liste ändern.

    Vielen dank für Deine Hilfe!

    BEARBEITEN:

    Ich habe auch versucht, und es funktioniert immer noch nicht:

     <item name="android:actionDropDownStyle">@style/MyApp.DropDownNav</item> <item name="actionDropDownStyle">@style/MyApp.DropDownNav</item> ... <style name="MyApp.DropDownNav" parent="Widget.Sherlock.Light.Spinner.DropDown.ActionBar"> <item name="android:background">@drawable/sharing_panel</item> </style> 

  • Konvertieren Sie Android-Bitmap in OpenCV Mat und rückwärts
  • Logcat zeigt keine Log-Anrufe an
  • Was ist android: weightSum in android, und wie funktioniert es?
  • SetText Digits programmgesteuert einstellen
  • Wie kann ich verhindern, dass meine Android App / Service von einem Task-Manager "getötet" wird?
  • Binäre XML-Datei Zeile # 17: Fehler beim Aufblasen der Klasse <unbekannt> verursacht durch NichtupportedOperationException: Kann nicht in Dimension konvertieren: type = 0x2
  • 5 Solutions collect form web for “Styling Sherlock Action Bar Drop-Down-Elemente”

    Ich hatte das gleiche Problem und nach einer Menge Kopfkratzen – die Art von Kratzen wie ein Hund mit einem schlechten Fall von Flöhen – ich habe es zu arbeiten. Dies ist mit ABS 4.1 (90). Der untenstehende Code ändert die Hintergrundfarbe des Dropdown-Elements.

    SomeActivity.java

     Context context = ab.getThemedContext(); ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource( context, R.array.map_activity_view_list, R.layout.sherlock_spinner_item); list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item); 

    Anmerkung: Sie verwenden R.layout.sherlock_spinner_item für die createFromResource und R.layout.sherlock_spinner_dropdown_item für die setDropDownViewResource. Dies ist, was in der Probe in der ABS-Quelle erscheint: https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/demos/src/com/actionbarsherlock/sample/demos/ListNavigation.java

    Dies ist, weil die nicht ausgewählte Dropdown in der Aktionsleiste, wenn die sherlock_spinner_item Layout und die tatsächlichen Dropdown-Elemente verwenden die sherlock_spinner_dropdown_item Layout, was bedeutet, dass die Stile sind für jeden unterschiedlich:

    • Sherlock_spinner_item
      • Android: spinnerItemStyle
      • SpinnerItemStyle
    • Sherlock_spinner_dropdown_item
      • Android: spinnerDropDownItemStyle
      • SpinnerDropDownItemStyle

    Denken Sie daran, beide Stile sind erforderlich – Android: vordefinierte Styles für die native ICS ActionBar und die Stil ohne die Android: Präfix ist für die AcrionBarSherlock Stil auf Geräte älter als ICS.

    Res / values ​​/ styles.xml

     <?xml version="1.0" encoding="utf-8"?> <resources> <style name="Theme.MyApp" parent="Theme.Sherlock.Light"> <!-- the text when loading --> <!-- <item name="actionBarStyle">@style/Widget.MyApp.ActionBar</item> <item name="android:actionBarStyle">@style/Widget.MyApp.ActionBar</item> --> <!-- the dropdown items --> <item name="android:spinnerDropDownItemStyle">@style/MyApp.Widget.Holo.DropDownItem</item> <item name="spinnerDropDownItemStyle">@style/MyApp.Widget.Holo.DropDownItem</item> <!-- the action bar dropdown menu item --> <!-- <item name="android:spinnerItemStyle">@style/MyApp.Widget.Holo.SpinnerItem</item> <item name="spinnerItemStyle">@style/MyApp.Widget.Holo.SpinnerItem</item> --> </style> <style name="Widget.MyApp.ActionBar" parent="Widget.Sherlock.Light.ActionBar"> <item name="titleTextStyle">@style/Widget.MyApp.TitleTextStyle</item> <item name="android:titleTextStyle">@style/Widget.MyApp.TitleTextStyle</item> </style> <style name="Widget.MyApp.TitleTextStyle" parent="TextAppearance.Sherlock.Widget.ActionBar.Title"> <item name="android:textColor">@color/orange</item> </style> <style name="MyApp.Widget.Holo.DropDownItem" parent="Widget.Sherlock.Light.DropDownItem.Spinner"> <item name="android:background">@color/orange</item> </style> <style name="MyApp.Widget.Holo.SpinnerItem" parent="Widget.Sherlock.TextView.SpinnerItem"> <item name="android:background">@color/orange</item> </style> </resources> 

    Res / values ​​/ color.xml

     <?xml version="1.0" encoding="utf-8"?> <resources> <color name="orange">#ffEf4f1f</color> </resources> 

    Bitte markieren Sie als Antwort, wenn dies für Sie löst. Vielen Dank!

    Links:

    Styles durchstöbern:

    https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock/res/values/abs__styles.xml

    Themen durchsuchen:

    https://github.com/JakeWharton/ActionBarSherlock/blob/master/actionbarsherlock/res/values/abs__themes.xml

    Um den Hintergrund des Menüpunktes in der Sherlock Action Bar (v4.1.0) zu ändern, verwenden Sie Folgendes:

     <style name="My_Theme" parent="Theme.Sherlock"> <item name="android:popupMenuStyle">@style/MyApp.PopupMenuStyle</item> <item name="popupMenuStyle">@style/MyApp.PopupMenuStyle</item> </style> <style name="MyApp.PopupMenuStyle" parent="Widget.Sherlock.ListPopupWindow"> <item name="android:popupBackground">@drawable/menu_item_background</item> </style> 

    hoffe das hilft.

    Ich habe das benutzt und seine Arbeit für mich

     <style name="MyDropDownItem" parent="Widget.Sherlock.Spinner.DropDown.ActionBar"> <item name="android:background">@drawable/spinner_background_holo_light</item> <item name="android:popupBackground">@color/actionbar_normal</item> <item name="android:dropDownSelector">@drawable/list_selector_holo_light</item> </style> <style name="myTheme" parent="@style/Theme.Sherlock"> ... ... ... <item name="android:actionDropDownStyle">@style/MyDropDownItem</item> <item name="actionDropDownStyle">@style/MyDropDownItem</item> </style> 

    woher,

    "Spinner_background_holo_light" und "list_selector_holo_light" sind selektoren

    und

    "Actionbar_normal" ziehbar (Bild ODER Farbe)

    Ich bin mir nicht sicher, ob diese Frage in einer befriedigenden Weise beantwortet wurde, aber ich bin in dieses Problem gegangen und habe keine Antwort gefunden, die ich mochte. Es schien, als hätte ich eine ziemlich normale Konfiguration von ActionBarSherLock und mit der Dropdown-Navigation gab mir einige schlechte Ergebnisse aus der Box. Schwarzer Text auf schwarzem Hintergrund. Ich möchte den Text weiß machen. Hier ist, wie ich es vollbracht habe:

    Für den Anfang ist das Basisthema meiner Anwendung Theme.Sherlock:

     <style name="AppBaseTheme" parent="Theme.Sherlock"> </style> 

    Meine tatsächliche Anwendung Thema AppTheme erweitert meine Basis (ich kann mich nicht erinnern, warum ich dies zu der Zeit, es ist wahrscheinlich unnötig).

     <style name="AppTheme" parent="AppBaseTheme"> <item name="spinnerItemStyle">@style/SpinnerItemStyle</item> <item name="android:spinnerItemStyle">@style/SpinnerItemStyle</item> </style> 

    Ich musste Widget.Sherlock.TextView.SpinnerItem und so weiter unten überschreiben:

     <style name="SpinnerItemStyle" parent="Widget.Sherlock.TextView.SpinnerItem"> <item name="android:textAppearance">@style/TextAppearance.MySpinnerItem</item> </style> 

    Der Grund dafür war, auf das TextApperance-Widget TextAppearance.Sherlock.Widget.TextView.SpinnerItem : TextAppearance.Sherlock.Widget.TextView.SpinnerItem

    Dies wurde wie folgt überschrieben:

     <style name="TextAppearance.MySpinnerItem" parent="TextAppearance.Sherlock.Widget.TextView.SpinnerItem"> <item name="android:textColor">#FFFFFF</item> <item name="android:textSize">16sp</item> <item name="android:textStyle">normal</item> </style> 

    Mein größter Fehler beim Binden, um den Text zu bekommen, um zu versuchen, dies zu beheben, versuchte, direkt TextColor in der überschriebenen SpinnerItemStyle zu setzen. Da es ein textAppearance-Widget verwendet hat, funktionierte es einfach nicht.

    Dann mein Code, um diese Arbeit so aussehen zu lassen (in meiner Aktivität onCreate-Methode):

     SpinnerAdapter spinnerAdapter = ArrayAdapter.createFromResource(this, R.array.call_type, R.layout.sherlock_spinner_item); OnNavigationListener onNavigationListener = new OnNavigationListener() { // Get the same strings provided for the drop-down's ArrayAdapter String[] strings = getResources().getStringArray(R.array.call_type); @Override public boolean onNavigationItemSelected(int position, long itemId) { String filter = strings[position]; filterCalls(filter); return true; } }; ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); actionBar.setListNavigationCallbacks(spinnerAdapter, onNavigationListener); 

    Dies erlaubte mir, die Farbe des Textes zu ändern, auf dem Spinner Dropdown mit ActionBarSherlock.

    ActionBarSherlock erfordert, dass du eines seiner 3 Themen benutzt. Sie können sie aber erweitern und den Dropdown-Stil überschreiben, wie folgt:

     <style name="MySherlockLightTheme" parent="Theme.Sherlock.Light"> <item name="actionDropDownStyle">@style/MyDropDownNav</item> </style> 

    Dies geht davon aus, dass du das Holo-Light-Theme möchtest und dein Dropdown-Stil ist MyDropDownDav.

    Dann in deinem Code, du wechselst einfach, um dein Thema zu benutzen (entweder im Manifest, oder mach es in Activity's onCreate).

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.