我使用了以下代码:
listview.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
final int checkedCount = listview.getCheckedItemCount();
mode.setTitle(checkedCount + " Selected");
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.mymenu, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
//my delete code
mode.finish();
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode mode) {
//
}
});
mymenu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/delete"
android:icon="@android:drawable/ic_menu_delete"
android:title="Delete"
app:showAsAction="always"
/>
</menu>
styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:actionModeBackground">@android:color/holo_blue_dark</item>
<item name="android:actionModeStyle">@style/TestActionModeStyle</item>
</style>
<style name="TestActionModeStyle">
<item name="android:titleTextStyle">@style/TestTitleStyle</item>
<item name="android:subtitleTextStyle">@style/TestSubTitleStyle</item>
</style>
<style name="TestTitleStyle">
<item name="android:textColor">@android:color/black</item>
<item name="android:background">@android:color/holo_red_dark</item>
</style>
<style name="TestSubTitleStyle">
<item name="android:textColor">@android:color/black</item>
<item name="android:background">@android:color/holo_green_dark</item>
</style>
当我在listview上长按时,选择了项目,菜单随删除按钮一起出现。但我无法设置整个菜单和事件的颜色,也不会反映所选的列表视图项。
白色菜单背景颜色和选定列表视图项目也会出现白色。
所以我想从列表视图颜色更改菜单颜色和所选项目。
从上面的代码来看它不起作用。
我怎样解决这个问题?
答案 0 :(得分:0)
请在问题的菜单部分检查此答案:How to change the background color of Action Bar's Option Menu in Android 4.2?
此答案Change background color of selected item on a ListView,用于更改所选的列表视图项目。
为了完整起见,这些问题的部分内容与您相关:
对于菜单(注意他们谈论动作栏,但菜单也包括在内):
有一种简单的方法可以更改操作栏中的颜色使用ActionBar 发生器..
但是由于你已经有了一种风格,你只想在链接的问题中进一步更新菜单:
在样式生成器中,相关设置为Popup颜色,即 影响&#34;溢出菜单,子菜单和微调器面板背景&#34;。
继续生成zip,但是在生成的所有文件中,你 只需要一个图像,menu_dropdown_panel_example.9.png,其中 看起来像这样:
因此,将其不同的分辨率版本添加到res / drawable- *。 (也许可以将它们重命名为menu_dropdown_panel.9.png。)
然后,作为一个例子,在res / values / themes.xml中你会得到 以下,使用android:popupMenuStyle和android:popupBackground 是关键设置。
<style name="MyAppActionBarTheme" parent="android:Theme.Holo.Light"> <item name="android:popupMenuStyle">@style/MyApp.PopupMenu</item> <item name="android:actionBarStyle">@style/MyApp.ActionBar</item> </style> <!-- The beef: background color for Action Bar overflow menu --> <style name="MyApp.PopupMenu" parent="android:Widget.Holo.Light.ListPopupWindow"> <item name="android:popupBackground">@drawable/menu_dropdown_panel</item> </style> <!-- Bonus: if you want to style whole Action Bar, not just the menu --> <style name="MyApp.ActionBar" parent="android:Widget.Holo.Light.ActionBar.Solid"> <!-- Blue background color & black bottom border --> <item name="android:background">@drawable/blue_action_bar_background</item> </style>
对于列表视图:
您可以跟踪当前所选元素的位置:
OnItemClickListener listViewOnItemClick = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) { mSelectedItem = position; mAdapter.notifyDataSetChanged(); } };
并覆盖适配器的getView方法:
@Override public View getView(int position, View convertView, ViewGroup parent) { final View view = View.inflate(context, R.layout.item_list, null); if (position == mSelectedItem) { // set your color } return view; }