我已将actionLayout添加到我的上下文栏菜单项,现在它已不再可点击了,我已经添加了onClick处理程序,但还没有运气。
菜单项:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<!-- highlight swatches -->
<item
android:orderInCategory="1"
android:id="@+id/highlight_item_1"
android:title="Highlight yellow"
android:showAsAction="always"
android:actionLayout="@layout/highlight_action_layout"
android:minWidth="2dp"/>
</menu>
菜单项布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:id="@+id/higlight_layout">
<ImageView
android:id="@+id/menu_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_menu_highlights_yellow"/>
<TextView
android:id="@+id/menu_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C1"
android:layout_toRightOf="@+id/menu_img"/>
</RelativeLayout>
onClick处理程序:
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.menu_reader_contextual_actions, menu);
menu.findItem(0).getActionView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("", "");
}
});
}
答案 0 :(得分:0)
尝试 -
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// Inflate a menu resource providing context menu items
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.menu_reader_contextual_actions, menu);
final MenuItem item = menu.findItem(R.id.your_item_id);
item.getActionView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.i("", "");
}
});
return true;
}
注意:您必须使用商品ID代替menu.findItem
的0。
<强>更新强>
更好地使用onActionItemClicked
-
public abstract boolean onActionItemClicked (ActionMode模式, MenuItem项目)
在API级别11中添加了被调用以报告用户单击某个操作 按钮。
<强>参数强>
模式当前的ActionMode
item 点击的项目
<强>返回强>
如果此回调处理事件,则为true;如果是标准,则为false MenuItem调用应该继续。
示例 -
// Called when the user selects a contextual menu item
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.your_item_id:
doSomething();
mode.finish(); // Action picked, so close the CAB
return true;
default:
return false;
}
}