2010-11-26 7 views
11

Ich muss einen anklickbaren Text in einen Absatztext einbetten, clickablespan kann es tun. Aber kann ich diesen Stil ändern, anstatt den Standardfokus/Drücken/Unfokussieren zu verwenden? Wie beim Fokussieren ist die Hintergrundfarbe blau, die Textfarbe ist weiß, bei Unschärfe ist die Hintergrundfarbe weiß, die Textfarbe ist blau.kann ich das Aussehen und Gefühl der Clickabspan ändern

Antwort

20

Hier ist das Beispiel

bottomMsg = (TextView) findViewById(R.id.bottom_msg); 
int start = bottomMsg.getText().toString().indexOf(terms); 
MovementMethod movementMethod = LinkMovementMethod.getInstance(); 
bottomMsg.setMovementMethod(movementMethod); 

Spannable text = (Spannable) bottomMsg.getText(); 
//TermAndConditions is a clickableSpan. 
text.setSpan(new TermAndConditions(), start, start + terms.length(), Spannable.SPAN_POINT_MARK); 
text.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.customYellowColor)), start, start + terms.length(), 0); 

Der Punkt ist, farb Spanne ist nach der klickbare-Spanne. Ansonsten ändert sich die Farbe nicht.

+1

Eine Liste von Style-Klassen finden Sie hier: http://developer.android.com/reference/android/text/style/CharacterStyle. html – clocksmith

14

Sie können die updateDrawState Methode von ClickableSpan außer Kraft setzen:

SpannableString spannableString = new SpannableString("text"); 
spannableString.setSpan(
    new ClickableSpan() { 
     @Override 
     public void onClick(View widget) { 
      Toast.makeText(getContext(), "Click!", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void updateDrawState(TextPaint ds) { 
      ds.setColor(getResources().getColor(R.color.link)); 
     } 
    }, 0, 4, Spanned.SPAN_INCLUSIVE_INCLUSIVE); 

textView.setText(spannableString); 

textView.setMovementMethod(LinkMovementMethod.getInstance()); 
Verwandte Themen