我在操作栏sherlock中的溢出菜单上做任何事都很困难。
理想情况下,我想为每个项目使用自定义TextView
,以便在其上设置不同的字体并更改pressed
状态的颜色。
我尝试过(一切都没有成功):
Changing The Style Of Actionbar Overflow
Actionbar styled overflow menu items
listview as action overflow in sherlock actionbar
https://groups.google.com/forum/#!msg/actionbarsherlock/5lHOKNlXn_4/f9XicMXbFFAJ
我的应用会有不同的片段,所有片段都在溢出菜单中扩展BaseFragment
不同的项目。我也在使用v4支持包。我正在创建这样的菜单:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.activity_borrow, menu);
}
activity_borrow.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_filter"
android:title="test"
android:orderInCategory="100"
android:showAsAction="never"
/>
</menu>
我的应用使用的是继承自Theme.Sherlock
。
如何在该菜单中使用自定义视图?或者至少,我如何更改默认的蓝色pressed
状态?
答案 0 :(得分:4)
要更改溢出列表项的颜色,请在应用主题中添加两个项目,通常在res/values/styles.xml
中定义:
<item name="android:dropDownListViewStyle">@style/DropDownListView</item>
<item name="dropDownListViewStyle">@style/DropDownListView</item>
在同一个文件中,添加刚刚分配的样式:
<style name="DropDownListView" parent="@style/Widget.Sherlock.ListView.DropDown">
<item name="android:listSelector">@drawable/selectable_background</item>
</style>
最后在drawable文件夹中创建一个可绘制的selectable_background.xml
选择器,其中包含:
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime" >
<item android:state_pressed="false" android:state_focused="true" android:drawable="@color/focussed_color" />
<item android:state_pressed="true" android:drawable="@color/pressed_color" />
<item android:drawable="@android:color/transparent" />
</selector>
最后,定义通常放在colors.xml
中的颜色:
<resources>
<color name="pressed_color">#FF8E4067</color> <!-- your purple tone already ;) -->
<color name="focussed_color">#DD8E4067</color>
</resources>
在我的应用程序中,我使用了“ActionBar Style Generator”作为baboo建议,它可以方便地为您处理所有事情。对于这个答案,我只是提取并简化了我认为构成溢出菜单样式的部分。
我认为关于造型三种不同项目的效果有一些谜团:
android:dropDownListViewStyle
包括
溢出菜单隐藏在ActionBar中的“三个点”后面。 android:actionDropDownStyle
混淆,如果您使用actionBar.setNavigationMode(NAVIGATION_MODE_LIST)
android:popupMenuStyle
是设置此样式的正确属性。同样,这只是我记忆中自己开发的应用程序。
另外,请务必检查没有其他样式文件(例如configuration qualifiers的文件夹)覆盖您刚刚定义的样式。
总而言之,我知道这只会改变列表项的背景颜色。要在其中使用完全自定义视图,您可以创建custom spinner view,向ActionBar添加一个带有“三点”图标的虚拟按钮,并在点击时打开微调器。