我正在尝试创建一个上下文ActionBar
。我使用了android devpage中的示例,但我仍然无法使用它。我在onitemlongclick上设置了一个eventlistener,但setSelected(true)
似乎没有做任何事情。我知道事件已被触发,因为actionmode
已打开,但它不会选择任何项目。
longclicklistener
位于fragment
中,由活动中的viewpager
持有,该活动包含fragment
的多个实例。我希望能够从页面中选择项目,然后对选择做一些事情。
我目前的代码:
片段:
AdapterView.OnItemLongClickListener onLongClick = new AdapterView.OnItemLongClickListener() {
// Called when the user long-clicks on someView
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view,
int i, long l) {
MainActivity parent = (MainActivity)getActivity();
if (parent.actionMode != null) {
return false;
}
parent.actionMode = getActivity().startActionMode(parent.actionModeCallback);
view.setSelected(true);
return true;
}
};
活动中的操作模式回调
public ActionMode.Callback actionModeCallback = new ActionMode.Callback() {
// Called when the action mode is created; startActionMode() was called
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Inflate a menu resource providing context menu items
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.contextual_actionbar, menu);
return true;
}
// Called each time the action mode is shown. Always called after onCreateActionMode, but
// may be called multiple times if the mode is invalidated.
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false; // Return false if nothing is done
}
// Called when the user selects a contextual menu item
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_remove_list:
mode.finish(); // Action picked, so close the CAB
return true;
default:
return false;
}
}
// Called when the user exits the action mode
@Override
public void onDestroyActionMode(ActionMode mode) {
actionMode = null;
}
};
答案 0 :(得分:0)
这是旧文章,但对于所有新来者...
要在视图设置为选中时更改颜色,您需要使用color state list。 颜色状态列表是xml资源文件,用于指定应应用的样式 根据视图所在的状态(选择的是这些状态之一)。像这样:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/textColor" android:drawable="@color/Background" android:state_selected="true"/>
<item android:color="@color/textColor" android:drawable="@color/Background"/>
</selector>
在此处保存XML文件:res/color/filename.xml
。
您必须在此XML资源视图上设置android:background
(根据状态需要更改的android:textColor
)。
然后在您setSelected(true)
时应用适当的样式。请注意,@drawable
用于背景颜色,而@color
用于其他组件,例如文本颜色。