2016-05-12 19 views
2

我想让textview的子字符串可点击,以便它将开始下一个活动。 我想在我的TextView中点击“...更多”来打开新闻的详细描述,有没有解决方案?如何将onclicklistener放在Textview上的子字符串

TextView description = (TextView) vi.findViewById(R.id.detail); 

我想设置onclicklistener特定的词TextView(这里描述)。

+1

到目前为止您尝试了什么? –

+1

看看这个答案[Spannable text](http://stackoverflow.com/a/10697453/4804264) –

回答

1

试试这个代码

public class YourActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_test); 

     ((TextView) findViewById(R.id.textView)).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // Do your stuff 
      } 
     }); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
    } 

} 

这是你的布局

评论后
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:text="Do you want to see" /> 

    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_toEndOf="@+id/textView2" 
     android:text="...more?" /> 

</RelativeLayout> 

编辑

所以,你必须使用SpannableString类和ClickableSpan,像这样

SpannableString string = new SpannableString("YourStringHere"); 
ClickableSpan clickHandler = new ClickableSpan() { 
    @Override 
    public void onClick(View v) { 
     //do your stuff here 
    } 
    @Override 
    public void updateDrawState(TextPaint tp) { 
      super.updateDrawState(tp); 
      tp.setUnderlineText(false); 
     } 
}; 

//x and y are the start and end of the clickable substring 
string.setSpan(clickHandler, x, y, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 

TextView tv = (TextView) findViewById(R.id.your_text_view); 
tv.setText(string); 
tv.setMovementMethod(LinkMovementMethod.getInstance()); 
tv.textView.setHighlightColor(Color.TRANSPARENT); 

我希望这有助于! ;-)

+0

你不明白我在说什么..我不想把listenser放在textview上,我在试着将听众放置在textView中的特定单词 –

1

你不给我们很多工作的证明,但仍,以下应该可以帮助您:

 description.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(this, myActivity.class); 
       startActivity(intent); 
      } 
     }); 

而且不要忘记在你的TextView的XML设置:

android:clickable="true" 

编辑:我编辑过,所以我的代码现在填写你的代码。

+0

你不明白我在说什么..我不希望将listenser放在textview上,我正在尝试的是将听众放在textView中的特定单词上 –

+0

然后你需要做的是2或3如果你需要它包装)不同TextViews,一个onclicklistener设置在他身上,其他(s)只是放在一边。这完全是关于你的XML中的小布局修改。 – Amesys

+0

但我不知道如何追加textView一个接一个......两个textview可以安排在垂直或水平...我试过这个逻辑,但不能得到解决方案 –

1

你在找什么似乎是ClickableSpan你可以在你的文本视图中使用不同格式的多个跨度,并且只有一个带有点击回调的跨度。

相关问题