对话框中的可点击链接

时间:2012-02-12 23:38:32

标签: android dialog alertdialog

在描述我的更改日志的对话框中,我想要一些指向我们的Twitter和Facebook页面的链接。因为我不想在文本中使用裸网址,所以我使用的是Html.fromHtml(..)和标准的html样式链接(一个href)。但是,无论我如何进行对话(无论是通过AlertDialog.Builder还是带有自定义视图的Dialog),我都无法获得可点击的链接。我还在textview中设置了linksClickable=true,但没有运气。如果有人能帮助我,那就太好了!

change_log_dialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linlay2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/dialog_text_view"
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_margin="@dimen/view_padding"
    android:layout_weight="1"
    android:linksClickable="true"
    android:text="@string/gen_placeholder"
    android:textAppearance="?android:attr/textAppearanceMedium" >
</TextView>

<LinearLayout
    android:id="@+id/verticallayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:divider="?android:attr/dividerHorizontal"
    android:dividerPadding="0dip"
    android:orientation="vertical"
    android:showDividers="beginning" >

    <Button
        android:id="@+id/help_close"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/help_close" />

</LinearLayout>

调用对话框的当前方法:

Dialog dialog = new Dialog(this);
dialog.setTitle(R.string.changetitle);
View v = getLayoutInflater().inflate(R.layout.change_log_dialog, null);
((TextView) v.findViewById(R.id.dialog_text_view)).setText(getRawAsset(R.raw.change));
dialog.setContentView(v);
return dialog;

使用getRawAsset(..):

public Spanned getRawAsset(int id) {

    InputStream mStream = getResources().openRawResource(id);
    InputStreamReader mRead = new InputStreamReader(mStream);
    BufferedReader mReader = new BufferedReader(mRead);
    StringBuilder returner = new StringBuilder();
    String line = "";
    try {
        while ((line = mReader.readLine()) != null) {

            returner.append(line);

        }

        return Html.fromHtml(returner.toString());
    } catch (IOException e) { 
        e.printStackTrace();
    }
    return null;

}

1 个答案:

答案 0 :(得分:2)

也许您宁愿使用Linkify代替Html.fromHtml(...)Linkify以及Linkify.TransformFilter应该能够将链接转换为更加用户友好的内容。