Dialog中的链接与文本进行焦点更改

时间:2013-09-25 08:34:47

标签: android dialog hyperlink

我创建了一种简单的方法来显示内部链接的对话框。这些链接应该是可点击的,并且一切都很好。

但问题是现在所有文字都会在触摸时作出反应,使得普通文字在触摸时会闪烁。

 private void showDialogWithLinks(final String title, final SpannableString content, final String negativeButtonTitle) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    Linkify.addLinks(content, Linkify.ALL);
    builder.setTitle(title)
            .setMessage(content)
            .setNegativeButton(negativeButtonTitle,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });

    AlertDialog alert = builder.create();

    try {
        alert.show();
        ((TextView)alert.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
    } catch (Exception e) {
        finish();
    }
}

任何人都有一个简单的解决方案吗?

BR / Henric

2 个答案:

答案 0 :(得分:1)

用以下内容替换了try-catch:

        try {
        alert.show();
        TextView contentView = ((TextView)alert.findViewById(android.R.id.message));
        contentView.setMovementMethod(LinkMovementMethod.getInstance()); // Makes sure the links are opened
        contentView.setTextColor(contentView.getCurrentTextColor()); // This is to remove focus on main text
    } catch (Exception e) {
        finish();
    }

这是删除正在使用的ColorStateList,并且仅使用主颜色。因此,删除文本颜色上的不需要的行为。

希望这也有助于某人:)

BR / Henric

答案 1 :(得分:0)

我在运行Gingerbread的设备上也遇到过这个问题。我通过使用带有“ setItems ”的AlertDialog.Builder修复它。

    final CharSequence[] items = { "item1", "item2", "item3"};

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Options for ");
    builder.setItems(items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int position) {
            // OnClick
        }
    }).show();