在android中以编程方式获取选择句柄

时间:2013-04-22 10:05:20

标签: android selection handles

在我的应用程序中,我有EditText元素,但我像TextView一样使用它(它不可编辑)。

我想通过点击某个按钮选择此字段中的所有文字。 我用下一个代码

来做
Selection.setSelection((Spannable) et.getText(),0, et.getText().length());
et.setSelected(true);

它工作正常并选择了文本但在此之后我无法更改选择的结尾。 如何以编程方式调用选择句柄?

我也阻止了OnLongClick,因为我只需要复制选项并将其添加到自定义按钮中。

3 个答案:

答案 0 :(得分:1)

您需要确保EditText在布局文件中包含属性android:textIsSelectable="true"

你也可以做同样的事情  et.setTextIsSelectable(true);

但请确保您的应用minSdkVersion11才能使用此功能。

答案 1 :(得分:0)

尝试这样的事情

 et.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
            int strt=   et.getSelectionStart();
            int end =   et.getSelectionEnd();
                Log.i(" Selectionm",et.getText().toString().substring(strt, end));
                return false;
            }
        });

答案 2 :(得分:0)

使用必需的android:textIsSelectable="true",以EditText或TextView作为参数调用以下方法:

private fun forceSelectionWithHandlesVisible(view: TextView) {
    if (!view.hasSelection()) {
        view.performLongClick()
    }
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
        // Hack required to make the selection handles visible when focus programmatically
        val event = MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_UP, 0F, 0F, 0)
        with(event) {
            view.onTouchEvent(this)
            recycle()
        }
    }
}

为我工作。