在TextView的Android的超链接的定制AlertDialog不可点击(Android hy

2019-06-27 05:51发布

下面我刚才的问题我仍然有我的自定义管理超链接的问题AlertDialog但我相信我缩小的问题,因为我觉得它不仅没有工作,因为它是一个自定义对话框。

我已经照着所有的说明这里和这里 ,但似乎无法绕过这种情况

strings.xml我有一个字符串这样定义的:

<string name="link_text_manual"><b>text2:</b> This is some other
  text, with a <a href="http://www.google.com">link</a> specified
  via an &lt;a&gt; tag.  Use a \"tel:\" URL
  to <a href="tel:4155551212">dial a phone number</a>.
</string>

如果我创建我的对话是这样的:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Data")
        .setIcon(R.drawable.info)
       .setMessage(R.string.link_text_manual)
       .setCancelable(true)
       .setNegativeButton("OK", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
                dialog.dismiss();
           }
       });

AlertDialog welcomeAlert = builder.create();
welcomeAlert.show();
// Make the textview clickable. Must be called after show()
((TextView)welcomeAlert.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());

它显示是这样的:

这工作正常和所有点击都点击。

现在,我希望同样的事情,但是,自定义布局。

创建一个TextViewinfo.xml是这样的:

<TextView
    android:id="@+id/infoDetailText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/infoVersionTitle"
    android:autoLink="all"
    android:linksClickable="true"
    android:padding="4dp" />

这是代码:

    Context ctx = this;
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
    View layout = inflater.inflate(R.layout.info, (ViewGroup) findViewById(R.id.infoLayout));

    AlertDialog.Builder about = new AlertDialog.Builder(ctx);
    about.setView(layout);
    about.setTitle("Data");
    about.setIcon(R.drawable.info);

    AlertDialog displayInfo = about.create();
    displayInfo.show();
    // Make the textview clickable. Must be called after show()
    TextView textView = (TextView) displayInfo.findViewById(R.id.infoDetailText);
    textView.setText(R.string.link_text_manual);
    textView.setMovementMethod(LinkMovementMethod.getInstance());

与上面的代码它显示这样的(链接无法点击,甚至没有被标记为链接):

如果我删除

    textView.setMovementMethod(LinkMovementMethod.getInstance());

它显示像波纹图像(链接标记为链接,但无法点击):

我也试着使用Linkifyandroid:autoLink="web" ,但结果总是相同的。

setMessage()的作品,但与一个自定义布局TextView不能让它工作。

也许这是简单的,但似乎无法使它发挥作用。 有什么建议?

谢谢

Answer 1:

您没有定义TextView的android:autoLink="all"android:clickable="true"android:linksClickable="false"

对于如下info.xml的TextView

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/infoDetailText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="4dp" />


Answer 2:

无论如何,你的代码完美地工作,...

代码AlertDialog:

LayoutInflater inflater = LayoutInflater.from(ctx);
View layout = inflater.inflate(R.layout.info, null);
AlertDialog.Builder about = new AlertDialog.Builder(ctx);
about.setTitle("Data");
about.setIcon(R.drawable.info);

// Make the textview clickable. Must be called after show()
TextView textView = (TextView) layout.findViewById(R.id.infoDetailText);
textView.setText(R.string.link_text_manual);
textView.setMovementMethod(LinkMovementMethod.getInstance());
about.setView(layout);
AlertDialog displayInfo = about.create();
displayInfo.show();

TextView的XML的代码:

<TextView
    android:id="@+id/infoDetailText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/infoVersionTitle"
    android:padding="4dp" />

删除两个属性..

android:autoLink="all"
android:linksClickable="true"


Answer 3:

试试这个

setText(Html.fromHtml(String));


文章来源: Android hyperlinks on TextView in custom AlertDialog not clickable