我们并不关心弹出的item类型是什么,我们只需要拦截下来ActionMode,然后返回我们自己的自定义ActionMode即可。 @Override public ActionMode startActionMode(ActionMode.Callback callback) { ActionMode actionMode startActionMode(ActionMode.Callback callback, int type) ActionMode actionMode = super.startActionMode 7、返回新填充的actionMode给系统。 /** * 处理item,处理点击 * @param actionMode */ private ActionMode resolveActionMode(ActionMode actionMode
java.lang.VerifyError: Verifier rejected class androidx.appcompat.app.WindowDecorActionBar: androidx.appcompat.view.ActionMode androidx.appcompat.app.WindowDecorActionBar.startActionMode(androidx.appcompat.view.ActionMode$Callback ) failed to verify: androidx.appcompat.view.ActionMode androidx.appcompat.app.WindowDecorActionBar.startActionMode (androidx.appcompat.view.ActionMode$Callback): [0x2A] register v0 has type Precise Reference: androidx.appcompat.app.WindowDecorActionBar $ActionModeImpl but expected Reference: androidx.appcompat.view.ActionMode (declaration of 'androidx.appcompat.app.WindowDecorActionBar
使用上下文操作模式 上下文操作模式是 ActionMode 的一种系统实现,它将用户交互的重点转到执行上下文操作上。 为单个视图启用上下文操作模式 如果希望仅当用户选择特定视图时才调用上下文操作模式,则应: 实现 ActionMode.Callback 接口。 例如:实现 ActionMode.Callback 接口: private ActionMode.Callback mActionModeCallback = new ActionMode.Callback 在上述示例中, ActionMode 用于在启动操作模式之前检查成员是否为空,以确保当 ActionMode 实例已激活时不再重建该实例。 在侦听器的回调方法中,您既可以为上下文操作栏指定操作,也可以响应操作项目的点击事件,还可以处理从 ActionMode.Callback 接口继承的其他回调。
5、WebView长按弹出ActionMode菜单样式问题 三星手机WebView弹出的菜单样式有可能会出现此问题,解决方法可以继承WebView重写startActionMode()方法,然后修改menu @Override public ActionMode startActionMode(ActionMode.Callback callback) { return super.startActionMode { private ActionMode.Callback callback; private Context context; public CustomCallback( Context context, ActionMode.Callback callback) { this.callback = callback; this.context = context; } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) {
android.app.Activity; import android.os.Bundle; import android.support.v4.app.NavUtils; import android.view.ActionMode uncopyableEdit.setCustomSelectionActionModeCallback(actionModeCallback); } private ActionMode.Callback actionModeCallback = new ActionMode.Callback() { public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } public void onDestroyActionMode(ActionMode mode) { } public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mEt.setCustomSelectionActionModeCallback(genActionModeCallback1()); private ActionMode.Callback genActionModeCallback1 () { return new ActionMode.Callback() { @Override public boolean onCreateActionMode (ActionMode mode, Menu menu) { Log.d(TAG, "onCreateActionMode:" + " selected ); return true; } @Override public boolean onPrepareActionMode(ActionMode ); return true; } @Override public boolean onActionItemClicked(ActionMode
,我们所做出的操作不同,那么我们需要在内部声明所有存在的状态和一个当前状态 public class StickerView extends ImageView { private enum ActionMode delete the handling sticker FLIP_HORIZONTAL //horizontal flip the sticker } private ActionMode mCurrentMode = ActionMode.NONE; private List<Sticker> mStickers = new ArrayList<>(); private switch (action) { case MotionEvent.ACTION_DOWN: mCurrentMode = ActionMode.DRAG;
appCompatDelegate = AppCompatDelegate.create(conreteActivity, new AppCompatCallback() { public ActionMode onWindowStartingSupportActionMode(ActionMode.Callback callback) { return null;
LinearLayout> 最终层级结构: DecorView (FrameLayout) └── LinearLayout (来自 screen_simple.xml) ├── ViewStub (可选,用于ActionMode
android:attr/textColorPrimaryInverse</item> <item name="actionModeStyle">@style/Widget.Holo.Light.ActionMode.Inverse Widget.Holo.ActionButton.CloseMode</item> <item name="actionModePopupWindowStyle">@android:style/Widget.Holo.PopupWindow.ActionMode