【问题标题】:Problem with SpannableString and ClickableSpanSpannableString 和 ClickableSpan 的问题
【发布时间】:2019-06-16 17:41:03
【问题描述】:

我写了这段代码:

public class BaldrActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.a_dei_baldr);

    String myString = "Click Here!";

    SpannableString ss = new SpannableString(myString);

    ClickableSpan clickableSpan1 = new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            Toast.makeText(BaldrActivity.this, "hello world", Toast.LENGTH_SHORT).show();
        }

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

    ss.setSpan(clickableSpan1, 6, 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

    TextView tv = findViewById(R.id.tv_baldr1);
    tv.setText(myString);
    tv.setMovementMethod(LinkMovementMethod.getInstance());
}

}

但是……没有任何改变。我的意思是,代码构建正确,应用程序没有崩溃,TextView 实际上在“单击此处!”中发生了变化,但它不可点击并且它的外观没有改变......为什么?

【问题讨论】:

  • 你设置tv.setClickable(true);了吗?

标签: java android uiscrollview spannablestring clickablespan


【解决方案1】:

看起来你正在设置字符串:

tv.setText(myString);

改为设置您正在创建的 SpannableString:

tv.setText(ss);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-06
    • 2018-07-13
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多