2011-11-13 30 views
7

Có cách nào chúng tôi có thể đặt tùy chỉnh có thể vẽ (từ tài nguyên) thành một khoảng không, đặc biệt là ClickSpan, của TextView?Android - Đặt nền có thể vẽ tùy chỉnh thành ClickSpan

Google trả về nhiều câu trả lời để tắt đánh dấu hoặc thay đổi màu sắc, v.v. bằng cách ghi đè cập nhậtDrawState() của khoảng, nhưng tôi không thấy cách có thể đặt mức có thể vẽ được với nền.

Tôi thấy một khả năng trong DynamicDrawableSpan, nhưng tôi không thể làm cho nó hoạt động cùng với ClickableSpan. Đây là mã của tôi:

public class MyDynamicDrawableSpan extends DynamicDrawableSpan 
{ 
    private Context c; 

public MyDynamicDrawableSpan(Context context) { 
    super(); 
    c = context; 
} 

@Override 
public Drawable getDrawable() { 
    Resources res = c.getResources(); 
    Drawable d = res.getDrawable(R.drawable.span_background); 
    return d; 
} 

}

Và đây là cách tôi sử dụng nó:

SpannableStringBuilder ssb = new SpannableStringBuilder(text); 
MyDynamicDrawableSpan ddSpan = new MyDynamicDrawableSpan(getApplicationContext()); 
... 
ssb.setSpan(ddSpan, start, end, 0); 
ssb.setSpan(new ClickableSpan(... 

này không hoạt động. Nó chỉ giúp làm cho khoảng không nhìn thấy được. Có ý tưởng sáng nào không?

+0

tệp span_background.xml của bạn trông như thế nào? Tôi đã thử một cái gì đó tương tự bằng cách tạo ra một hình dạng drawable, nhưng span hiển thị như là vô hình. Có phải vì hình dạng có thể vẽ được phải được đặt ở chế độ nền của chế độ xem như nút không? http://stackoverflow.com/questions/6674657/how-change-button-shape-using-xml-or-using-java-code – toobsco42

+0

Tôi đang làm một cái gì đó tương tự Ở đây http://stackoverflow.com/questions/10812316/ contact-bubble-edittext – toobsco42

+0

ở đây tôi đã giải thích rõ. Bạn có thể thấy [answer] của tôi (http://krishnalalstha.wordpress.com/2012/06/07/making-gosmsproevernote-like-edittext/) –

Trả lời

0

Bạn cần đặt Bound of the Drawable trước khi trả về trong getDrawable().

d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
+0

Tôi đã thử điều này nhưng nó vẫn không hoạt động đối với một hình dạng được định nghĩa xml có thể vẽ được . Khoảng chỉ là vô hình. – toobsco42

+0

Clickablespan phải được đặt như sau: http://stackoverflow.com/questions/8641343/android-clickablespan-not-calling-onclick – toobsco42

Các vấn đề liên quan