4

我真的很难对动作栏夏洛克中的溢出菜单做任何事情。

截屏

理想情况下,我想TextView为每个项目使用自定义,以便在其上设置不同的字体并更改pressed状态的颜色。

我试过(都没有成功):

更改动作栏溢出的样式动作
栏样式的溢出菜单项
列表视图作为夏洛克动作栏中的动作溢出
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状态?

4

1 回答 1

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在 drawable 文件夹中创建一个可绘制的选择器,其中包含:

<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 的建议使用了“ActionBar Style Generator”,它可以方便地为您处理一切。对于这个答案,我只是提取并简化了我认为构成溢出菜单样式的部分。

我认为样式化三个不同项目的效果有些神秘:

  • 据我了解,android:dropDownListViewStyle包括隐藏在 ActionBar 中“三个点”后面的溢出菜单。
  • 不要与 混淆 android:actionDropDownStyle,它用于应用导航下拉菜单的样式,以防您使用actionBar.setNavigationMode(NAVIGATION_MODE_LIST)
  • 但是,某些带有硬件菜单按钮的 Android 设备(例如 Nexus S 或 Galaxy S3 Mini)不显示“三个点”,而是在单击硬件菜单按钮时从屏幕底部滑入的叠加菜单。android:popupMenuStyle是设置此样式的正确属性。

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

此外,请确保检查没有其他样式文件(例如具有配置限定符的文件夹)覆盖您刚刚定义的样式。

总而言之,我知道这只会改变列表项的背景颜色。要在其中使用完全自定义的视图,您可以创建自定义微调器视图,将带有“三个点”图标的虚拟按钮添加到 ActionBar 并在单击时打开微调器。

于 2013-03-14T19:42:35.323 回答