Android UI(TextView 中的部分文字的点击)

首先,我们使用到的是CharSequence的子类SpannableString类
在这个类中有这样一个
TestActivity.java

public class TestActivity extends AppCompatActivity {
    private TextView textView;
    private String message = "我们使用到的是我们使用到的是我们使用到的是";
    private SpannableString spanAbleInfo;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        textView = (TextView) findViewById(R.id.textView);
        spanAbleInfo = new SpannableString(message);
        spanAbleInfo.setSpan(new CommonClickableSpan(),0,3, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
        textView.setText(spanAbleInfo);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setHighlightColor(getResources().getColor(android.R.color.transparent));
    }
}

CommonClickableSpan.java

public class CommonClickableSpan extends ClickableSpan implements View.OnClickListener {
    @Override
    public void onClick(View widget) {
        Log.i(getClass().getSimpleName(),"text view is clicked");
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds);
        ds.setUnderlineText(false);
        ds.clearShadowLayer();
        ds.setColor(Color.RED);
    }
}

写到这里,其实很多地方已经没问题,而上次我记录了,有一个地方有一个坑,记得要注意,就是如果这个CommonClickableSpan类只继承了ClickableSpan类,那么内部的onClick方法只能接受一次,而想每次点击都有效,就要继承OnClickListener接口,还有就是别忘记了添加textView.setMovementMethod(LinkMovementMethod.getInstance());

你可能感兴趣的:(Android UI(TextView 中的部分文字的点击))