揭秘Android 6.0之Text Selection
在Android6.0Android Design 增加了Text-Selection功能,Text-Selection 提供了功能引导以及用户文本选择。下面咱们来看看怎么使用吧。 1、准备: Android studio 开发环境 2、TextSelection文档: >>将startActionMode(Callback)改成startActionMode(Callback,ActionMode.TYPE_FLOATING) >>使用新的ActionMode.Callback2接口 3、新建一个Project: 首先咱们先new一个ActionMode.Callback2对象,在ActionMode.Callback2的onCreateActionMode方法使用menuInflater设置好菜单项,代码如例1-1: 例1-1 - private ActionMode.Callback2 callback2 = new ActionMode.Callback2() {
- @Override
- public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- MenuInflater menuInflater = mode.getMenuInflater();
- menuInflater.inflate(R.menu.text,menu);
- return true;
- }
- @Override
- public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return false;
- }
- @Override
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- return false;
- }
- @Override
- public void onDestroyActionMode(ActionMode mode) {
- }
- //控制这个浮动菜单的位置
- @Override
- public void onGetContentRect(ActionMode mode, View view, Rect outRect) {
- super.onGetContentRect(mode, view, outRect);
- }
- };
复制代码
例1-2 - <?xml version="1.0" encoding="utf-8"?>
- <menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:title="复制" />
- <item android:title="剪切" />
- <item android:title="粘贴" />
- <group>
- <item android:title="传智播客" />
- <item android:title="Android" />
- <item android:title="黑马程序员" />
- </group>
- </menu>
复制代码
注意此处我们要把View对象的android:textIsSelectable="true" 设置为true,否则自定义ActionMode不会被调用。代码如例1-3: 例1-3 - <TextView
- android:id="@+id/tv"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textIsSelectable="true"
- android:text="@string/str"
- android:textSize="16sp" />
复制代码
然后给View对象设置自定ActionMode。代码如列1-4: - @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.text);
- TextView tv = (TextView) findViewById(R.id.tv);
- tv.setCustomSelectionActionModeCallback(callback2);
复制代码运行效果图如下(资源见附件,此处work GIF无法运行):
|