如何在EditText中创建可点击的链接?

low*_*llk 12 android linkify android-edittext

我有一个EditText关于我的Android,我希望任何嵌入式网址都是可点击的.我使用了这个Linkify类,它将它们变成蓝色并加下划线.但是,我无法弄清楚如何实际使它们可点击.

谢谢!

Kam*_*nek 17

XML:

 android:linksClickable="true"
 android:autoLink="web|email"
Run Code Online (Sandbox Code Playgroud)

JAVA:

TextView textView = (TextView) findViewById(R.id.textViewId);
textView.setText(Html.fromHtml(html));
textView.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)

  • 这适用于TextView,但问题是EditText (4认同)
  • 这对我不起作用.我使用XML版本没有运气.文本看起来像一个链接,但不可点击. (3认同)
  • 这是错误的:https://code.google.com/p/android/issues/detail?id = 137509 (2认同)

ple*_*mik 17

对于编辑文本,我设法通过以下方式获取可点击的链接.首先,我实现了这里描述的Custom MovementMethod

Java的

(从xml或上下文创建编辑文本)

editText.setLinksClickable(true);
editText.setAutoLinkMask(Linkify.WEB_URLS);
editText.setMovementMethod(CustomMovementMethod.getInstance());
//If the edit text contains previous text with potential links
Linkify.addLinks(editText, Linkify.WEB_URLS);
Run Code Online (Sandbox Code Playgroud)

然后在用户键入时管理网址看起来像链接

editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {


        }

        @Override
        public void afterTextChanged(Editable s) {

                Linkify.addLinks(s, Linkify.WEB_URLS);

        }
    });
Run Code Online (Sandbox Code Playgroud)

  • 是@Collinux类[Linkify](http://developer.android.com/reference/android/text/util/Linkify.html)支持4种类型:Web链接,电话号码,电子邮件和地图地址 (2认同)