如何在Textview android中单击高亮单词

如何在Textview android中单击高亮单词,第1张

概述我正在创建一个应用程序,我在EditText中从用户那里获得输入. 现在,在单击按钮后,输入的字符串将显示在TextView中.现在我的问题是,当用户点击任何一个单词时,我会在TextView中突出显示该单词. 例如:用户输入:你好朋友你好吗? 当用户单击“Hello”时,它将在TextView中突出显示.或者,当用户点击“如何”时,它将突出显示. 请帮我. public class MainAc 我正在创建一个应用程序,我在EditText中从用户那里获得输入.

现在,在单击按钮后,输入的字符串将显示在TextVIEw中.现在我的问题是,当用户点击任何一个单词时,我会在TextVIEw中突出显示该单词.

例如:用户输入:你好朋友你好吗?

当用户单击“Hello”时,它将在TextVIEw中突出显示.或者,当用户点击“如何”时,它将突出显示.

请帮我.

解决方法
public class MainActivity extends Activity {TextVIEw _tv;@OverrIDepublic voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main);_tv = (TextVIEw) findVIEwByID( R.ID.tv );SpannableString ss = new SpannableString("Hello frIEnd how are you.");ss.setSpan(new MyClickableSpan(),5,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);ss.setSpan(new MyClickableSpan(),6,12,13,16,17,20,21,24,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);_tv.setText(ss);_tv.setMovementMethod(linkMovementMethod.getInstance());}class MyClickableSpan extends ClickableSpan{ //clickable spanpublic voID onClick(VIEw textVIEw) {//do something   Toast.makeText(MainActivity.this,"Clicked",Toast.LENGTH_SHORT).show();}@OverrIDepublic voID updateDrawState(TextPaint ds) {   ds.setcolor(color.BLACK);//set text color    ds.setUnderlineText(false); // set to false to remove underline} }}

编辑:

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"xmlns:tools="http://schemas.androID.com/tools"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:orIEntation="vertical"tools:context=".MainActivity" ><TextVIEw    androID:ID="@+ID/tv"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_gravity="center"    androID:layout_margintop="50dp"    androID:text="@string/hello_world" /><EditText    androID:ID="@+ID/ed"    androID:layout_wIDth="fill_parent"    androID:layout_height="40dp"    androID:layout_margintop="40dp" /><button    androID:ID="@+ID/button1"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_gravity="center"    androID:layout_margintop="20dp"    androID:text="Click" /> </linearLayout>

您可以按空格分割字符串,并将每个单词设置为spannable字符串.然后使spannable字符串可单击.这样您就不需要对String的长度进行硬编码.用户可以单击textvIEw中的任何单词并突出显示.

public class MainActivity extends Activity {TextVIEw _tv;String[] each;SpannableString ss1;button b;EditText et;    String s;@OverrIDepublic voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main);b= (button) findVIEwByID(R.ID.button1);et = (EditText) findVIEwByID(R.ID.ed);_tv = (TextVIEw) findVIEwByID( R.ID.tv );b.setonClickListener(new OnClickListener(){    @OverrIDe    public voID onClick(VIEw v) {        // Todo auto-generated method stub        s=et.getText().toString();        _tv.setText("");        for(int i=0;i<s.length();i++)        {            each = s.split("\s+");        }        for(int i=0;i<each.length;i++)        {            System.out.println("................"+each[i]);            ss1=  new SpannableString(each[i]);            ss1.setSpan(new MyClickableSpan(),ss1.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);            _tv.append(ss1);             _tv.append(" ");         }        _tv.setMovementMethod(linkMovementMethod.getInstance());    }   });}class MyClickableSpan extends ClickableSpan{ //clickable spanpublic voID onClick(VIEw textVIEw) {//do something   Toast.makeText(MainActivity.this,Toast.LENGTH_SHORT).show(); } @OverrIDe public voID updateDrawState(TextPaint ds) {   ds.setcolor(color.BLACK);//set text color    ds.setUnderlineText(false); // set to false to remove underline } } }

http://www.chrisumbel.com/article/android_textview_rich_text_spannablestring.
用于造型可扩展的字符串.

结果快照.

总结

以上是内存溢出为你收集整理的如何在Textview android中单击高亮单词全部内容,希望文章能够帮你解决如何在Textview android中单击高亮单词所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1122033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存