如何在不使用java的情况下在Android上的TextView中创建可点击的url链接

时间:2017-06-30 04:23:54

标签: android android-layout android-xml

我在Textview上使用了可点击的网址,但它确实有效。但是如何使用浏览器设置可打开URL的可点击和突出显示的文本。这可以从Android XML OR kotlin中使用,而不使用像setText(Html.fromHtml(""))这样的Java代码。

String value = "<html>Visit Web <a href=\"http://www.domainname.com\">mysite</a> View</html>";
    TextView text = (TextView) findViewById(R.id.text);
    text.setText(Html.fromHtml(value));
    text.setMovementMethod(LinkMovementMethod.getInstance());

7 个答案:

答案 0 :(得分:5)

此属性适合您 TextView:android:autoLink =“web”

这是一个示例布局  的 layout.xml

<TextView
        android:id="@+id/txtLostpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="email"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/lostpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
        android:id="@+id/txtDefaultpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:autoLink="web"
        android:gravity="center"
        android:padding="20px"
        android:text="@string/defaultpassword"
        android:textAppearance="?android:attr/textAppearanceSmall" />

<强> string.xml

<string name="lostpassword">If you lost your password please contact <a href="mailto:support@cleverfinger.com.au?Subject=Lost%20Password" target="_top">support@cleverfinger.com.au</a></string>

<string name="defaultpassword">User Guide <a href="http://www.cleverfinger.com.au/user-guide/">http://www.cleverfinger.com.au/user-guide/</a></string>

答案 1 :(得分:5)

enter image description here

<TextView
        android:textSize="18sp"
        android:autoLink="web"
        android:clickable="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:text="http://www.example.com"
        tools:ignore="HardcodedText" />

没有必要的declear布局ID,也没有java方面的代码。它适用于xml

使用自动链接

    • 适用于网站android:autoLink="web"
    • 致电android:autoLink="phone"
    • 电子邮件android:autoLink="email"
    • 对于地图android:autoLink="web"
    • 适用于所有android:autoLink="all"

答案 2 :(得分:3)

只需将此属性添加到TextView android:autoLink="web"  e.g

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:gravity="center"
        android:autoLink="web"
        android:clickable="true"
        android:text="https://www.google.co.in"/>

答案 3 :(得分:1)

as @Aakash Verma建议使用android:autoLink="web"

但它会改变你的textColor。要克服这一点,还要向您添加android:textColorLink="your_text_color" TextView。

你的TextView应该是这样的。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:autoLink="web"
    android:text="https://www.google.co.in/"
    android:textColor="@color/colorPrimary"
    android:textColorLink="@color/colorPrimary" /> 

如果你还想在java中做什么

myUrl= (TextView) rootView.findViewById(R.id.myUrl);
myUrl.setText("https://www.google.co.in/");

Linkify.addLinks(myUrl, Linkify.WEB_URLS);
myUrl.setLinkTextColor(Color.parseColor("#000000"));

修改

enter image description here enter image description here

快乐编码

答案 4 :(得分:0)

在TextView的xml中使用android:autoLink="web"。它应该自动转换网址点击(如果在文本中找到)

另外,不要忘记android:linksClickable="true"。我不认为您需要设置html标记,就像<a href>标记一样......

答案 5 :(得分:0)

在TextView中添加行:

`android:autoLink="web"` 

喜欢这个

<TextView
        ................
        ................
        android:autoLink="email"
       .................
 />

答案 6 :(得分:0)

如果您使用来自 strings.xml 资源的文本,html 标签似乎被剥离

因此您必须在strings.xml 中使用<![CDATA[**your string with click links**]]> 才能使用Html.fromHtml(string)

将其转换为html