当用户单击其中的ClickableSpan时,如何阻止Checkbox处于按下状态?

时间:2018-10-11 20:17:18

标签: android android-checkbox clickablespan

我需要一个CheckBox包含一个集成的可点击区域,以在应用程序中弹出另一个屏幕。 This solution表现出色:

CheckBox checkBox = (CheckBox) findViewById(R.id.my_check_box);

ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View widget) {
        // Prevent CheckBox state from being toggled when link is clicked
        widget.cancelPendingInputEvents();
        // Do action for link text...
    }
    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds);
        // Show links with underlines (optional)
        ds.setUnderlineText(true);
    }
};

SpannableString linkText = new SpannableString("Link text");
linkText.setSpan(clickableSpan, 0, linkText.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
CharSequence cs = TextUtils.expandTemplate(
    "CheckBox text with link: ^1 , and after link", linkText);

checkBox.setText(cs);
// Finally, make links clickable
checkBox.setMovementMethod(LinkMovementMethod.getInstance());

...除了我遇到this comment中提到的相同问题之外。当用户单击ClickableSpan时,在单击被跨度记录并处理的同时,CheckBox也短暂进入了按下状态。 CheckBox的框的行为就像用户单击它一样,尽管它不会切换实际的选中状态。

您可以在此GIF中看到效果-观看左侧CheckBox的实际框:

CheckBox Animation

当用户单击CheckBox的其余部分时,我仍然希望该按下状态,所以我不想尝试更改背景或其他方法来消除按下状态。从ClickableSpan可以说“请不要过渡到检查状态”吗?

0 个答案:

没有答案