2011-04-08 73 views
25

我有點小問題,我需要刪除或自定義這個橙色突出顯示點擊clickablespan。這是延長ClickableSpan突出clickablespan點擊

public class InternalClickableSpan extends ClickableSpan { 

    private String clicked; 

    @Override 
    public void updateDrawState(TextPaint ds) { 
     ds.setUnderlineText(false); 
    } 

    public InternalClickableSpan(String clickedString) { 
     clicked = clickedString; 
    } 

    @Override 
    public void onClick(View view) { 
     Selection.setSelection((Spannable) ((TextView)view).getText(), 0); 
     Toast toast = Toast.makeText(mContext, clicked, Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 

我的課,這是我如何使用它在文本視圖

Spannable spans = (Spannable) tv.getText();  
spans.setSpan(new InternalClickableSpan(contacts[i]), text.indexOf(contacts[i]), text.indexOf(contacts[i])+contacts[i].length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

是否有人知道如何自定義「的onclick亮點」 spannable對象?

編輯:感謝Aleadam的回覆,我重寫updateDrawState(請看看我的InternalClickableSpan類中的第一個方法),但我找不到一種方法來定製這higlight反正。有沒有人有其他想法?由於

+0

嘗試重寫updateDrawState()? http://developer.android.com/reference/android/text/style/ClickableSpan.html#updateDrawState%28android.text.TextPaint%29 – Aleadam 2011-04-08 13:54:22

+0

@Aleadam謝謝你的回覆,我覆蓋了updateDrawState(請看看在我的InternalClickableSpan類中的第一種方法),但我無法找到一種方法來定製這higlight反正。有沒有人有其他想法?謝謝 – Robert 2011-04-11 04:59:46

+11

認爲我知道了,爲了禁用Higlight,我們需要在T​​extView – Robert 2011-04-15 08:29:33

回答

0
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <LinearLayout android:id="@+id/LinearLayout02" 
     android:layout_height="50px" 
     android:layout_width="fill_parent" 
     // Layout Click enable 
     android:clickable="true" 
     // Setting Highlight Option in background property 
     android:background="@android:drawable/list_selector_background" /> 
    </LinearLayout> 
</LinearLayout> 
+0

請參閱[幫助](http://stackoverflow.com/editing-help#code-and-preformatted-text)瞭解如何在編輯器中對代碼進行格式化 – McDowell 2011-06-15 07:04:13

1

只是用這個..

view.setSelector(new ColorDrawable(Color.TRANSPARENT)); 
+0

這僅適用於列表視圖 – 2014-09-29 11:21:05

15

你可以重寫的onClick(View部件)是這樣的:

 @Override 
     public void onClick(View widget) { 
      // do what must happen after click event. 
      widget.invalidate(); 
     } 
+0

它適用於我。節省了數小時。謝了哥們!! – moDev 2015-03-19 20:21:05

11

這將消除任何亮點。

tv.setHighlightColor(Color.TRANSPARENT); 
0

enter image description here

ClickableSpan linkClick = new ClickableSpan() { 
    @Override 
    public void onClick(View view) { 
     Toast.makeText(getApplicationContext(), "Link Click", 
       Toast.LENGTH_SHORT).show(); 
     view.invalidate(); 
    } 

    @Override 
    public void updateDrawState(TextPaint ds) { 
     if (textView.isPressed()) { 
      ds.setColor(Color.BLUE); 
      textView.invalidate(); 
     } else { 
      ds.setColor(Color.RED); 
     } 
    } 
}; 
textView.setHighlightColor(Color.TRANSPARENT); 

Spannable spannableString = new SpannableString("Link in TextView"); 
spannableString.setSpan(linkClick, 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
textView.setText(spannableString, TextView.BufferType.SPANNABLE); 
textView.setMovementMethod(LinkMovementMethod.getInstance());