onClick inCreateActionMode

时间:2014-07-04 11:21:10

标签: android

我已将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("", "");
            }
        });
}

1 个答案:

答案 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;
   }
 }