我创建了一种简单的方法来显示内部链接的对话框。这些链接应该是可点击的,并且一切都很好。
但问题是现在所有文字都会在触摸时作出反应,使得普通文字在触摸时会闪烁。
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答案 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();