2016-05-12 21 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你可以在你的文本視圖中使用不同格式的多個跨度,並且只有一個帶有點擊回調的跨度。

相關問題