Android获取TextView中突出显示文本的长度

时间:2014-08-18 08:05:17

标签: android textview

我正在做一个具有TextView且可点击的应用程序。单击时,它允许用户选择某些单词或整个句子或段落。我得到了选择和突出显示文本的部分,问题是我希望突出显示不同的颜色并将突出显示的文本保存到db,以便下次用户检查时,他/她将看到突出显示的文本。

到目前为止,这是我尝试过的:

 tv.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {

            int startSelection = tv.getSelectionStart();
            int endSelection = tv.getSelectionEnd();
            String selectedText = tv.getText().toString().substring(startSelection, endSelection);

            Log.e("TEXT", "" + selectedText);

            SpannableString spannable = new SpannableString(tv.getText().toString());

            //Spannable spannable = new SpannableString(tv.getText().toString());
            spannable.setSpan(new BackgroundColorSpan(Color.BLUE), startSelection, endSelection, 0);

            //tv.setSelection(startSelection, endSelection);
            tv.setText(spannable); 

            return true;
        }

    });

layout.xml:

<TextView
        android:textStyle="bold"
        android:id="@+id/tvOrdinanceTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:textIsSelectable="true" /> 

任何想法或解决方法?我很乐意感谢你的帮助。感谢。

1 个答案:

答案 0 :(得分:0)

要更改文字颜色,请使用ForegroundColorSpan

spannable.setSpan(new ForegroundColorSpan(Color.RED), startSelection, endSelection, 0);

要保持文字颜色但更改所选文字颜色,请使用选择器: 在drawable下为它定义一个xml - text_color_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="@color/red" />
    <item android:color="@color/black" />
</selector>

在布局XML中设置TextView样式时使用该选择器:

android:textColor="@drawable/text_color_selector"

如果要保存所选文本,请执行以下操作:

String selectedText = v.getText().toString().substring(startSelection, endSelection);