ActionBar列表导航:标题和popup菜单中的不同文本颜色

我在我的操作栏中有一个黑色背景的导航列表。 然而,stream行菜单具有白色背景。

所以我想要实现的是,操作栏内的项目文本颜色是白色的,而popup菜单中的项目文本颜色是黑色的。

到目前为止,这是两个例子:

不好的例子

这是它应该是这样的:

计划

有谁知道一个解决scheme?

这是我的代码列表导航:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, new String[] { "Item 1", "Item 2" }); getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); getSupportActionBar().setListNavigationCallbacks(adapter, new ActionBar.OnNavigationListener() { @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { return true; } }); getSupportActionBar().setSelectedNavigationItem(0) 

这是我与之合作的一系列风格。

 <style name="CustomTheme" parent="@style/Theme.customized"> <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item> <item name="actionDropDownStyle">@style/CustomSherlockDropDownNav</item> <item name="android:actionDropDownStyle">@style/CustomSherlockDropDownNav</item> <!-- didn't work: http://stackoverflow.com/questions/12395381/android-actionbar-navigation-spinner-text-color <item name="android:spinnerDropDownItemStyle">@style/custom.Widget.DropDownItem.Spinner</item> <item name="spinnerDropDownItemStyle">@style/custom.Widget.DropDownItem.Spinner</item> --> <!-- didn't work: http://stackoverflow.com/questions/11479186/styling-actionbar-dropdown-menu <item name="android:actionBarWidgetTheme">@style/custom.actionBarWidgetTheme</item> <item name="actionBarWidgetTheme">@style/custom.actionBarWidgetTheme</item> --> <!-- didn't work: http://android-developers.blogspot.de/2011/04/customizing-action-bar.html <item name="android:dropDownListViewStyle">@style/CustomDropDownListView</item> <item name="dropDownListViewStyle">@style/CustomDropDownListView</item> --> .... </style> <style name="custom.actionBarWidgetTheme" parent="@style/Theme.Sherlock.Light.DarkActionBar"> <item name="android:spinnerDropDownItemStyle">@style/custom.Widget.DropDownItem.Spinner</item> </style> <style name="custom.Widget.DropDownItem.Spinner" parent="@style/Widget.Sherlock.DropDownItem.Spinner"> <item name="android:textAppearance">@style/custom.TextAppearance.Widget.DropDownItem</item> </style> <style name="custom.TextAppearance.Widget.DropDownItem" parent="@style/TextAppearance.Sherlock.Widget.DropDownItem"> <item name="android:textColor">#00A000</item> </style> <style name="CustomDropDownListView" parent="android:style/Widget.Holo.ListView.DropDown"> <item name="android:textColor">#00A000</item> <item name="android:textSize">8dip</item> </style> <style name="CustomSherlockDropDownNav" parent="@style/Widget.Sherlock.Light.Spinner.DropDown.ActionBar"> <item name="android:popupBackground">@drawable/menu_dropdown_panel_customtab</item> <item name="android:background">@drawable/spinner_background_ab_customtab</item> </style> 

然而没有什么是行不通的。

Solutions Collecting From Web of "ActionBar列表导航:标题和popup菜单中的不同文本颜色"

问题是你正在使用相同的资源android.R.layout.simple_dropdown_item_1line的微调项目和微调项目的下拉项目。

改为使用R.layout.sherlock_spinner_itemR.layout.sherlock_spinner_dropdown_item

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.sherlock_spinner_item, new String[] { "Item 1", "Item 2" }); adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item); 

这样,像Widget.Sherlock.TextView.SpinnerItem的样式将工作。

你可以实现这个只是创build自定义的XML,这将是您的列表项目。 像这样创build你的xml: custom_list_item.xml

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:singleLine="true" android:textSize="18sp" android:textColor="@color/holo_dark_red" android:paddingRight="110dip" android:layout_width="match_parent" android:layout_height="?attr/dropdownListPreferredItemHeight" android:textIsSelectable="false" android:ellipsize="marquee" /> 

并像这样使用它:

 adapter.setDropDownViewResource(R.layout.custom_list_item); 

这应该做的伎俩(至less它在我的应用程序中工作)。

 <style name="Theme.WhyCheck" parent="@style/Theme.AppCompat.Light"> <item name="android:spinnerItemStyle">@style/DropDownNav.Item.Inverse</item> </style> <style name="DropDownNav.Item.Inverse" parent="@style/Widget.AppCompat.DropDownItem.Spinner"> <item name="android:textAppearance">@style/ActionBar.TitleText</item> </style> <style name="ActionBar.TitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:fontFamily">sans-serif-light</item> <item name="android:textColor">@color/white</item> </style> 

应该是这样的。 不知道为什么使用微调“物品”风格@@

  @Override public View getView(int position, View convertView, ViewGroup parent) { // Inflating the layout for the custom Spinner LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.custom, null); // Declaring and Typecasting the textview in the inflated layout TextView tvLanguage = (TextView) layout .findViewById(R.id.tvLanguage); // Setting the text using the array tvLanguage.setText(obj[position]); //tvLanguage.setTextColor(Color.BLACK); tvLanguage.setTextSize(14f); return layout; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.customdropdown, null); // Declaring and Typecasting the textview in the inflated layout TextView tvLanguage = (TextView) layout .findViewById(R.id.tvLanguage); // Setting the text using the array tvLanguage.setText(obj[position]); //tvLanguage.setTextColor(Color.BLACK); tvLanguage.setTextSize(14f); return layout; } }