提到的Bellow是我为长按一下监听器事件注册framelayout的代码。
private void createActivityLayout(Fragment fragment)
{
FrameLayout frameLayout = (FrameLayout)getLayoutInflater().inflate(R.layout.professional_pa_frame_layout, null, false);
frameLayout.setClickable(true);
frameLayout.setOnLongClickListener(new View.OnLongClickListener()
{
public boolean onLongClick(View view)
{
if (actionMode == null)
{
return false;
}
actionMode = view.startActionMode(actionModelCallback);
view.setSelected(true);
return false;
}
});
getFragmentManager().beginTransaction().add(id, fragment, tag).commit();
}
片段内部包含一系列edittext实例或单个imageview实例。
每当在framelayout上执行长按时,我猜想会显示edittext的上下文操作栏。我认为该事件由editext捕获,并显示不同的上下文操作栏。每当我在framelayout中获得长按事件时,都会显示上下文操作栏的PFA图像。
如何在我的framelayout上整体捕获长按事件,而不显示其内部视图的上下文操作栏。下面写的xml代码是我想要为我的framelayout显示的上下文操作栏。
<item android:id="@+id/action_discard_notes"
android:icon="@drawable/discard_note"
android:title="@string/action_discard_notes"
android:showAsAction="always"
android:orderInCategory="1"/>
答案 0 :(得分:1)
您需要设置Edittext的 ActionModeCallback ,以便CAB中止并调用Framelayout长按以下代码...
m_editText.setCustomSelectionActionModeCallback(new Callback()
{
@Override
public boolean onCreateActionMode(android.view.ActionMode p_mode, Menu p_menu)
{
return false;
}
@Override
public boolean onPrepareActionMode(android.view.ActionMode p_mode, Menu p_menu)
{
return false;
}
@Override
public void onDestroyActionMode(android.view.ActionMode p_mode)
{
}
@Override
public boolean onActionItemClicked(android.view.ActionMode p_mode, MenuItem p_item)
{
return false;
}
});
您需要在 onCreateActionMode 中为中止CAB(上下文操作栏)返回false。