0

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

但问题是现在所有文本都会在触摸时做出反应,使正常文本在触摸时闪烁。

 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 / 亨利克

4

2 回答 2

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 / 亨利克

于 2013-09-25T11:35:05.233 回答
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();
于 2013-09-25T08:43:58.817 回答