can I change the look and feel of the clickablespa

2019-04-18 23:11发布

I have to embed a clickable text in a paragraph text, clickablespan can do it. But instead of using the default focus/press/unfocus style, can I change those style ? Like when focus, the background color is blue, text color is white, when unfocus, the background color is white, text color is blue.

3条回答
叛逆
2楼-- · 2019-04-18 23:46

Here is the example

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

The point is, color-span is after the clickable-span. otherwise, the color not changed.

查看更多
相关推荐>>
3楼-- · 2019-04-18 23:51

Link color can be changed in xml:

<TextView
    android:textColor="..."
    android:textColorLink="..." />
查看更多
做自己的国王
4楼-- · 2019-04-18 23:53

You can override the updateDrawState method of ClickableSpan:

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());
查看更多
登录 后发表回答