下面列出了android.view.ActionMode#Callback2 ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public FloatingActionMode(Context context, ActionMode.Callback2 callback, View originatingView, FloatingToolbar floatingToolbar) {
mContext = context;
mCallback = callback;
PopupMenu p = new PopupMenu(context, null);
mMenu = p.getMenu();
setType(ActionMode.TYPE_FLOATING);
p.setOnMenuItemClickListener(menuItem -> mCallback.onActionItemClicked(FloatingActionMode.this, menuItem));
mContentRect = new Rect();
mContentRectOnScreen = new Rect();
mPreviousContentRectOnScreen = new Rect();
mViewPositionOnScreen = new int[2];
mPreviousViewPositionOnScreen = new int[2];
mRootViewPositionOnScreen = new int[2];
mViewRectOnScreen = new Rect();
mPreviousViewRectOnScreen = new Rect();
mScreenRect = new Rect();
mOriginatingView = originatingView;
mOriginatingView.getLocationOnScreen(mViewPositionOnScreen);
mBottomAllowance = AndroidUtilities.dp(20);
mDisplaySize = new Point();
setFloatingToolbar(floatingToolbar);
}
public FloatingActionMode(Context context, ActionMode.Callback2 callback, View originatingView, FloatingToolbar floatingToolbar) {
mContext = context;
mCallback = callback;
PopupMenu p = new PopupMenu(context, null);
mMenu = p.getMenu();
setType(ActionMode.TYPE_FLOATING);
p.setOnMenuItemClickListener(menuItem -> mCallback.onActionItemClicked(FloatingActionMode.this, menuItem));
mContentRect = new Rect();
mContentRectOnScreen = new Rect();
mPreviousContentRectOnScreen = new Rect();
mViewPositionOnScreen = new int[2];
mPreviousViewPositionOnScreen = new int[2];
mRootViewPositionOnScreen = new int[2];
mViewRectOnScreen = new Rect();
mPreviousViewRectOnScreen = new Rect();
mScreenRect = new Rect();
mOriginatingView = originatingView;
mOriginatingView.getLocationOnScreen(mViewPositionOnScreen);
mBottomAllowance = AndroidUtilities.dp(20);
mDisplaySize = new Point();
setFloatingToolbar(floatingToolbar);
}
@TargetApi(23)
private void initData() {
mCallback2 = new ActionMode.Callback2() {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
if (inflater == null) {
return false;
}
inflater.inflate(R.menu.actionmode_menu, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
Toast.makeText(TextSelectionActivity.this, item.getTitle(), Toast.LENGTH_LONG).show();
mode.finish();
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
}
// 控制这个浮动菜单的位置
@Override
public void onGetContentRect(ActionMode mode, View view, Rect outRect) {
super.onGetContentRect(mode, view, outRect);
}
};
this.mTestTV.setCustomSelectionActionModeCallback(mCallback2);
}
@Override
public void onGetContentRect(ActionMode mode, View view, Rect outRect) {
if (mWrapped instanceof ActionMode.Callback2) {
((ActionMode.Callback2) mWrapped).onGetContentRect(mode, view, outRect);
} else {
super.onGetContentRect(mode, view, outRect);
}
}
@Override
public void onGetContentRect(ActionMode mode, View view, Rect outRect) {
if (mWrapped instanceof ActionMode.Callback2) {
((ActionMode.Callback2) mWrapped).onGetContentRect(mode, view, outRect);
} else {
super.onGetContentRect(mode, view, outRect);
}
}