2017-06-05 2 views
2

Betrachten wir den SatzWrap mehrere Textviews erscheinen, als ein Satz

Mike auf Davids Bewertung bei Pizza Planet kommentiert“ Dieser Satz kann auf zwei Zeilen umgebrochen, aber ich will die Wörter "Mike", "Davids" und "Pizza Planet klickbare Einzelteile".

Wenn ich separate TextViews für jedes dieser Wörter und auch für die nicht anklickbaren Wörter dazwischen verwende, wie kann ich das tun, damit sie schön in 2 Zeilen umhüllen?

Antwort

2

Sie spannable Saiten für Ihre Bedürfnisse nutzen können, check this out:

TextView textView = (TextView) findViewById(R.id.textView); 

SpannableString user = new SpannableString("Mike"); 
ClickableSpan userClickableSpan = new ClickableSpan() { 
    @Override 
    public void onClick(View textView) { 
     //click on user 
    } 
}; 
user.setSpan(userClickableSpan, 0, user.length(), 
      SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE); 

SpannableString commentedOnUser = new SpannableString("Davids"); 
ClickableSpan commentedOnUserClickableSpan = new ClickableSpan() { 
    @Override 
    public void onClick(View textView) { 
     //click on commentedOnUser 
    } 
}; 
commentedOnUser.setSpan(commentedOnUserClickableSpan, 0, commentedOnUser.length(), 
         SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE); 

SpannableString place = new SpannableString("Pizza Planet"); 
ClickableSpan placeClickableSpan = new ClickableSpan() { 
    @Override 
    public void onClick(View textView) { 
     //click on place 
    } 
}; 
place.setSpan(placeClickableSpan, 0, place.length(), 
       SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE); 

textView.setMovementMethod(LinkMovementMethod.getInstance()); 
textView.setHighlightColor(Color.TRANSPARENT); 
textView.setText(user); 
textView.append(" is has commented on "); 
textView.append(commentedOnUser); 
textView.append(" review at "); 
textView.append(place); 

Nun, wenn es alle Teil eines Textview ist, verwenden Sie „\ n“, die Linie zu brechen.

+0

Ist es möglich, die Verbindungsfarben zu setzen oder sie mit dieser Methode zu unterstreichen? – raklos

+0

Sorry für meine späte Antwort, ja du kannst. überschreiben 'updateDrawState' für das 'ClickableSpan'-Objekt (direkt nach onClick) und Sie können' setUnderlineText (boolean) 'und' setColor (int) '. –

Verwandte Themen