如何在Android中以编程方式选择或突出显示TextView?

时间:2017-01-20 09:38:03

标签: android textview highlight

目前,我正在创建一个小型应用程序供阅读。有一个textview显示文本。我们可以将文本添加为​​书签并存储在列表视图中。我想从列表视图中单击并突出显示或选择textview中的书签索引。我可以得到bookmark_index。有像textview.setSelect(Start,Length)这样的方法吗?或者任何图书馆都能做到吗?感谢

请查看图片视图以了解我的想法。

enter image description here

4 个答案:

答案 0 :(得分:2)

使用Spannable

Spannable WordtoSpan = new SpannableString("partial colored text");        
WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), startIndex, stopIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(WordtoSpan);

答案 1 :(得分:1)

这取决于您要支持的最低Android版本。

在3.0+(API Level 11及更高版本)上,TextView上有textIsSelectable属性,可以启用此行为。 E.g:

<TextView
    android:id="@+id/deviceIdTV"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textIsSelectable="true"
    android:text="" />

或者您可以使用下面的跨度自行实现此功能。

TextView myTV = (TextView)findViewById(R.id.textView1);
String  textString = "StackOverFlow Rocks!!!"; 
Spannable spanText = Spannable.Factory.getInstance().newSpannable(textString);
spanText.setSpan(new BackgroundColorSpan(0xFFFFFF00), 14, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myTV.setText(spanText);

答案 2 :(得分:0)

也许此解决方案将帮助您提供菜单或文本选择。

我希望文本可以选择(用于复制和粘贴),或者希望其他手势可以工作。

  • 在布局文件中或以编程方式将textIsSelectable设置为false。
  • 使用手势在文本视图上设置onTouchListener。
  • 允许其中一个手势切换到textSelection模式。见下文。

如何以编程方式设置textSelection?

  • 将textIsSelectable,focusable,longPressable设置为true
  • 将onTouchListener设置为null。
  • 安装点击侦听器,以切换回正常的手势/菜单。

1)安装您的GestureHandler:

$section = $printWord->phpWord->addSection();

$header = $section->addHeader();
$header->firstPage();

2)切换到文本选择方式:

// Create your Touch Listener  
onTouchListener = new OnSwipeTouchListener(mCtx, this);
view.setOnTouchListener( onTouchListener);

答案 3 :(得分:0)

以上所有解决方案都不适用于我。 然后我在 XML 中添加了 android:textIsSelectable="true",但它不起作用。

起作用的是添加textView.setTextIsSelectable(true) 在您的活动、片段或适配器中。

相关问题