Android Textview中的多个可点击的string

我正在创build一个小的Android应用程序。 我想在一个文本视图中显示多个部分点击。 (每个应该显示一些不同的消息)

最后,我设法找出如何在一个文本视图中显示多个跨度,但不幸的是onClick方法不起作用。 根本没有什么反应,甚至没有logcat线。

我有这样的东西:

SpannableStringBuilder ssb=new SpannableStringBuilder(); ssb.append("first second") ssb.setSpan(new ClickableSpan() { @Override public void onClick(View v) { //Eredmeny2.this is just the context, name of the whole class Toast.makeText(Eredmeny2.this, "first", Toast.LENGTH_LONG).show(); } }, 1, 3, 0); ssb.setSpan(new ClickableSpan() { @Override public void onClick(View v) { Toast.makeText(Eredmeny2.this, "second", Toast.LENGTH_LONG).show(); } }, 7, 10, 0); TextView t1=new TextView(this); t1.setText(ssb); ... 

文字加下划线很好,但没有任何反应,当我点击它们。 这是一个TableView的一部分,但我不认为这是相关的。 你有什么想法,为什么它不做任何事情? 我错过了什么? 还是应该用完全不同的方式来做呢?

提前致谢。


这部分使用的布局文件如下:

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/ScrollView01" android:background="#FF0000"> <TableLayout android:id="@+id/TableLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:stretchColumns="0" android:showDividers="middle" android:padding="3dp"> <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="3dp" android:background="#000000" android:textColor="#FFFFFF" android:padding="6dp" android:text="Hour" android:textSize="20sp" android:textStyle="bold" > </TextView> <TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:textStyle="bold" android:text="Minute" android:padding="6dp" android:textColor="#FFFFFF" android:background="#000000"> </TextView> </TableRow> </TableLayout> </ScrollView> 

而TextView直接使用的TextView布局如下:

 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dp" android:textSize="16sp" android:background="#000000" android:textIsSelectable="false" android:textColor="#FFFFFF"> </TextView> 

Related of "Android Textview中的多个可点击的string"

据我所知你想要使textview的多个部分点击。

这段代码适合我!

 SpannableString ss = new SpannableString("this is a text"); ss.setSpan(new myClickableSpan(1),0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ss.setSpan(new myClickableSpan(2),5, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ss.setSpan(new myClickableSpan(3),8, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); mTextView.setText(ss); mTextView.setMovementMethod(LinkMovementMethod.getInstance()); 

只是让自定义ClickableSpan来处理点击事件

 public class myClickableSpan extends ClickableSpan{ int pos; public myClickableSpan(int position){ this.pos=position; } @Override public void onClick(View widget) { Toast.makeText(getApplicationContext(), "Position " + pos + " clicked!", Toast.LENGTH_LONG).show(); } }