1

我尝试按照以下示例在我的警报对话框中的 TextView 中创建一个 HTTP 链接,但它不起作用:

如何使 TextView 中的链接可点击?

我可以让它工作的唯一方法是将链接的文本直接放入我的字符串并放入android:autoLink="web"我的 TextView。但我不想看到整个链接,只是名字。

这是创建我的对话框的位置:

@Override
protected Dialog onCreateDialog(int id) {
    LayoutInflater factory = LayoutInflater.from(this);

    switch (id) {
    case DISCLAIMER:
            final View disclaimerView = factory.inflate(R.layout.disclaimer_dialog, null);
            final TextView dtv = (TextView) disclaimerView.findViewById(R.id.disclaimer_body);

            dtv.setText("v"+versionName+"\n\n\u00A9"+Calendar.getInstance().get(Calendar.YEAR)+" "+"Developer\n\n" +
                getString(R.string.alert_dialog_disclaimer_body));

            dtv.setMovementMethod(LinkMovementMethod.getInstance());                

            return new AlertDialog.Builder(MyActivity.this)                
                .setView(disclaimerView)
                .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                    }
                })
                .create();
    }

    return null;
}

这是我的 TextView 位于R.layout.disclaimer_dialog

<TextView
    android:id="@+id/disclaimer_body"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="10dp"
    android:gravity="center"
    />

这是我的字符串资源:

<string name="alert_dialog_disclaimer_body">This application was developed and written by me.\n\nGraphs use AChartEngine licensed under <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.\n\nThe rest goes here.</string>
4

1 回答 1

1

TextView.setText(CharSequence)的文档说明:

设置 TextView 的字符串值。TextView 不接受类似 HTML 的格式,您可以对 XML 资源文件中的文本字符串执行此操作。要设置字符串样式,请将 android.text.style.* 对象附加到 SpannableString,或查看可用资源类型文档以获取在 XML 资源文件中设置格式化文本的示例。

根据他们的建议,格式和样式在带有 HTML 标记的样式标题下解释了如何同时拥有 HTML 标记和格式代码。

我认为在您的情况下最简单的事情就是调整您的布局以在您已经使用的一个视图中包含您的版权声明,并将下面的免责声明放在您只需不理会的第二个视图中:

<TextView
    android:id="@+id/disclaimer_body"
    android:text="@string/alert_dialog_disclaimer_body"
    ...
    />
于 2012-06-29T04:37:01.803 回答