2

fuzz

Hi everyone. I'd like to add a clickable url in the errormsg shown by using TextView.setError(msg) method. please take a look on my code.

final EditText testview = findViewById(R.id.testview);
final TextView textView = findViewById(R.id.testtextview);

Button btntest = findViewById(R.id.testbutton);
btntest.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        testview.setMovementMethod(new LinkMovementMethod());
        testview.setError(Html.fromHtml("testurl <a href=\"www.google.com\"> click me </a>"));
        LayoutInflater inflater = LayoutInflater.from(testview.getContext());
        TextView err = (TextView) inflater.inflate(
                Resources.getSystem().getIdentifier("textview_hint","layout", "android"), null);
        err.setMovementMethod(LinkMovementMethod.getInstance());


        textView.setMovementMethod(LinkMovementMethod.getInstance());
        textView.setText(Html.fromHtml("testurl <a href=\"www.google.com\"> click me </a>"));
        textView.setError(Html.fromHtml("testurl <a href=\"www.google.com\"> click me </a>"));
        inflater = LayoutInflater.from(textView.getContext());
        err = (TextView) inflater.inflate(
                Resources.getSystem().getIdentifier("textview_hint","layout", "android"), null);
        err.setMovementMethod(LinkMovementMethod.getInstance());

    }
});

I have tried to setMovementMethod() on the specific TextView, which shows the errormsg, but the "click me" seems remain unclickable.

Thanks again.

Ven
  • 39
  • 1

1 Answers1

0

If you can call setMovementMethod on error textview then this solution is perfect

final EditText testview = findViewById(R.id.editText);
    final TextView textView = findViewById(R.id.testtextview);




    Button btntest = findViewById(R.id.testbutton);
    SpannableStringBuilder ssb = new SpannableStringBuilder(Html.fromHtml("testurl <a href=\"www.google.com\"> click me </a>"));
    URLSpan[] urlSpans = ssb.getSpans(0,ssb.length(),URLSpan.class);
    int start = ssb.getSpanStart(urlSpans[0]);
    int end = ssb.getSpanEnd(urlSpans[0]);
    testview.setMovementMethod(LinkMovementMethod.getInstance());

    ClickableSpan span = new ClickableSpan() {
        @Override
        public void onClick(@NonNull View view) {
            Log.d("Cust","C");

        }
    };

    ssb.setSpan(span,start,end,Spannable.SPAN_INCLUSIVE_INCLUSIVE);



    //testview.setError(span.toString());

    testview.setError(ssb);
moumenShobakey
  • 426
  • 5
  • 14