2013-03-11 91 views
4

我真的很难做任何事情在操作栏sherlock的溢出菜单。使用自定义视图溢出菜单项

screenshot

理想情况下,我想,以设置一个不同的字体和改变pressed状态的颜色使用自定义TextView每个项目。

我已经试过(全部没有成功):

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

试试这个http://jgilfelt.github.com/android-actionbarstylegenerator/生成你自己的风格,并使用它 – baboo 2013-03-11 12:28:03

+1

我不想覆盖我的整个应用程序的样式 - 我只需要一个小部分那个生成器不提供。 – boz 2013-03-11 12:31:32

回答

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> 

终于在绘制文件夹中创建一个选择绘制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> 

在我的应用程序,我用“动作条样式生成器”作为baboo建议,这对于您方便地处理一切。对于这个答案,我只是提取并简化了我认为组成溢出菜单样式的部分。

我觉得这是对的造型三种不同项目的影响,有些神秘:

  • 从我的理解,android:dropDownListViewStyle包括隐藏ActionBar中的“三个点”背后的 溢出菜单。
  • 不要与android:actionDropDownStyle,其用于在情况下,应用程序导航下拉您使用actionBar.setNavigationMode(NAVIGATION_MODE_LIST)
  • 然而,一些与硬件菜单按钮Android设备(例如,歌Nexus S或银河S3的风格相混淆Mini) 不显示“三点”,但是如果点击硬件菜单按钮,则从屏幕底部滑入 覆盖菜单。 android:popupMenuStyle是对此样式的正确属性。

同样,这只是我从我自己的应用程序开发中记得的事情。

此外,请确保检查没有其他样式文件(例如,带有configuration qualifiers的文件夹)会覆盖您刚定义的样式。

总而言之,我明白这只会改变列表项的背景颜色。要在那里使用完全自定义的视图,你可以创建一个custom spinner view,在你的ActionBar中添加一个带有“三点”图标的虚拟按钮并点击打开微调器。

+0

真棒 - 感谢您解释所有这一切:) – boz 2013-03-15 09:18:22