spannablestring用在fragment中,设置点击监听无效


主要代码如下

        @Override
        public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            TextView textView = (TextView) view.findViewById(R.id.textview);
            String str = "Click me!";
            String txt = str + "Hello world!";
            SpannableString spannableString = new SpannableString(txt);
            ClickableSpan clickableSpan = new ClickableSpan() {
                @Override
                public void onClick(View widget) {
                    //Do something.
                    if(isAdded()) {
                        Toast.makeText(getActivity(), "You have clicked!", Toast.LENGTH_LONG).show();
//                        avoidHintColor(widget);
                    }
                }


                @Override
                public void updateDrawState(@NonNull TextPaint ds) {
                    super.updateDrawState(ds);
                    ds.setColor(getResources().getColor(android.R.color.holo_red_dark));
                    ds.setUnderlineText(false);
                    ds.clearShadowLayer();
                }
            };
            spannableString.setSpan(clickableSpan,0,str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            textView.setText(spannableString);
            textView.setMovementMethod(LinkMovementMethod.getInstance());


        }

这样做好后发现点击设置无效果二设置的颜色却有效果,然后把代码如下改正后,可以了

tv_reap_null = new TextView(context);
tv_reap_null.setGravity(Gravity.CENTER);
tv_reap_null.setPadding(0, 50, 0, 0);
tv_reap_null.setTextColor(Color.parseColor("#676767"));
tv_reap_null.setTextSize(15);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, 500);
tv_reap_null.setLayoutParams(params);

SpannableString string = new SpannableString(“dddddddddddddddddd”);
string.setSpan(new Click(), 10, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_reap_null.setText(string);
tv_reap_null.setMovementMethod(LinkMovementMethod.getInstance());//设置点击监听
mainView.addView(tv_reap_null);

      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值