2016-05-12 15 views
2

Ich möchte Teilstring von Textview klickbar machen, damit es die nächste Aktivität startet. Ich möchte auf "... Mehr" in meinem TextView klicken, um detaillierte Beschreibung der Nachrichten zu öffnen, gibt es eine Lösung?So platzieren Sie Onclicklistener in Teilstring auf Textansicht

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

ich will onclicklistener auf bestimmten Wort setzen in TextView (hier Beschreibung).

+1

Was hast du bisher versucht? –

+1

Werfen Sie einen Blick auf diese Antwort [spannbare Text] (http://Stackoverflow.com/a/10697453/4804264) –

Antwort

1

diesen Code Versuchen

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(); 
    } 

} 

Dies ist Ihr Layout

<?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> 

EDIT nach Kommentar

So haben Sie die SpannableString Klasse und ClickableSpan zu verwenden, so etwas wie dieses

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); 

Ich hoffe das hilft! ;-)

+0

Sie nicht verstehen, was ich sage..ich donot wollen Listener auf Textview platzieren, was ich versuche, ist Hörer auf ein bestimmtes Wort in textView platzieren –

1

Sie uns nicht viel von einem Beweis der Arbeit geben, aber immer noch, sollte die folgende helfen Ihnen:

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

Und vergessen Sie nicht in Ihrem Textview XML zu setzen:

android:clickable="true" 

BEARBEITEN: Ich bearbeitet so mein Code füllt jetzt Ihren.

+0

Sie donot verstehen, was ich sage..i Donot möchte Listener auf Textview platzieren, was ich versuche, Hörer auf ein bestimmtes Wort in TextView platzieren –

+0

Dann was Sie tun müssen, ist 2 (oder 3 wenn du es eingepackt brauchst) differents TextViews, man hat den onclicklistener auf ihn gesetzt, die anderen sind nur zur Seite gelegt. Es geht nur um kleine Layout-Änderungen in Ihrem XML. – Amesys

+0

aber ich weiß nicht, wie man textView nacheinander anfügt ... zwei textview kann in entweder vertikal oder horizontal angeordnet werden ... ich versuchte diese Logik, aber kann keine Lösung –

1

Was Sie suchen, scheint zu sein ClickableSpan Sie können mehrere Spannen mit unterschiedlicher Formatierung in Ihrem Textview haben und nur eine der Spannweite mit einem Callback auf klicken.

Verwandte Themen