【问题标题】:Android TextView - How to implement setOnClickListenerAndroid TextView - 如何实现 setOnClickListener
【发布时间】:2014-06-06 19:25:27
【问题描述】:

我需要实现TextViewsetOnClickListener的代码。我设置了文本(你的情况如何)。在此文本中,我只需要 are 将是可点击的而非普通文本。请给我建议。 谢谢。

【问题讨论】:

标签: android textview onclicklistener


【解决方案1】:

您可以使用ClickableSpan 来实现。假设您的文字是“我同意TT的使用条款和隐私政策”,并且您希望将隐私政策设置为可点击,那么您可以这样做。

 Spannable WordToSpan = new SpannableString("I agree to the Terms Of Use and Privacy Policy of TT");        
    WordToSpan.setSpan(new ForegroundColorSpan(Color.parseColor("#32a1fc") ), 31, 46, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    WordToSpan.setSpan(privacyPolicy, 31, 46, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);      ((TextView)findViewById(R.id.tv_terms_condition)).setText(WordToSpan);

 ClickableSpan privacyPolicy = new ClickableSpan() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LegalDisclaimer.this,PrivacyPolicy.class));
            }
            @Override
            public void updateDrawState(TextPaint ds) {// override updateDrawState
                ds.setUnderlineText(false); // set to false to remove underline
            }
        };

onClick() 方法中,你可以做任何你想做的事情..

【讨论】:

  • privacyPolicy onClick 不起作用。你能给我任何建议吗
  • 好的,知道了。你错过了一行 textView.setMovementMethod(LinkMovementMethod.getInstance());
【解决方案2】:
        SpannableString ss = new SpannableString("Hi this is @Naveen. I'll meet @Peter in the evening..Would you like to join @Sam??");

    ClickableSpan clickableSpanNaveen = new ClickableSpan() {
        @Override
        public void onClick(View textView) {
            //Do Stuff for naveen
        }
    };
    ClickableSpan clickableSpanPeter = new ClickableSpan() {
        @Override
        public void onClick(View textView) {
            //Do Stuff for peter
        }
    };
    ClickableSpan clickableSpanSam = new ClickableSpan() {
        @Override
        public void onClick(View textView) {
            //Do Stuff for sam
        }
    };

    ss.setSpan(clickableSpanNaveen, 11, 17, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    ss.setSpan(clickableSpanPeter, 29, 35, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    ss.setSpan(clickableSpanSam, 76, 79, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    TextView contentTextView=(TextView)userHeader.findViewById(R.id.contentTextView);
    contentTextView.setText(ss);
    contentTextView.setMovementMethod(LinkMovementMethod.getInstance());

【讨论】:

    【解决方案3】:
    String sourceString = "How <b>are</b> you"; 
    //mytextview.setText(Html.fromHtml(sourceString));   
    
     android.text.style.ClickableSpan can solve you problem.
    
        SpannableString ss = new SpannableString(sourceString);
        ClickableSpan clickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View textView) {
                startActivity(new Intent(MyActivity.this, NextActivity.class));
            }
        };
        ss.setSpan(clickableSpan, 4, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    
        TextView textView = (TextView) findViewById(R.id.hello);
        textView.setText(ss);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
    

    【讨论】:

    • 谢谢。下面的@bimal chawla 显示下划线。我只需要相同的粗体文本
    • @sunil 立即查看。我编辑了我的答案以将“是”或可点击的文本显示为粗体。您可以通过在代码中创建像 sourceString 这样的自定义字符串来做到这一点。
    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2017-01-22
    相关资源
    最近更新 更多