我正在做一个具有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" />
任何想法或解决方法?我很乐意感谢你的帮助。感谢。
答案 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);