Как сделать кликабельную ссылку в TextView.seterror () - PullRequest
2 голосов
/ 17 марта 2020

fuzz

Привет всем. Я хотел бы добавить кликабельный URL в errormsg, показанном с помощью метода TextView.setError (msg). пожалуйста, посмотрите на мой код.

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());

    }
});

Я попытался установитьMovementMethod () в указанном c TextView, которое показывает errormsg, но «щелкни по мне», кажется, остается неактивным.

Еще раз спасибо.

1 Ответ

0 голосов
/ 17 марта 2020

Если вы можете вызвать setMovementMethod при отображении текста ошибки, тогда это решение идеально

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);
...