在我的项目中,我使用一个简单的AlertDialog来输入一些信息。我的问题是,当我打开这个AlertDialog时,我有一个非常短的时间闪烁,这是不正确的。我想知道我错在哪里,最重要的是,构建它的正确方法应该是什么,因为我找不到解决方案,如果不是改变对象的解决方案。但我真的需要AlertDialog
private void insertNameManually(String hint, int mType) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getContext());
LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.alert_dialog, null);
EditText editText = dialogView.findViewById(R.id.editTextName);
Button clearTextButton = dialogView.findViewById(R.id.clearText);
Button confirmButton = dialogView.findViewById(R.id.confirmButton);
dialogBuilder.setView(dialogView);
dialogBuilder.setTitle(R.string.std_choose);
confirmButton.setOnClickListener(v -> {
name = editText.getText().toString();
name = hint;
new Handler().postDelayed(() -> {
MyFragment.this.type = mType;
Intent data = new Intent();
data.putExtra("type", type);
activity.setResult(Activity.RESULT_OK, data);
activity.finish();
}, 275);
});
editText.setText(hint);
clearTextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setText("");
}
});
AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
}
2条答案
按热度按时间dpiehjr41#
**解决方案:**您可以尝试向警报对话框添加标志
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
您可以尝试通过切换到
DialogFragment
可以帮助消除闪烁。提示:只想通过查看您的代码来添加此处,而不是
您可以这样做,将创建并显示警报对话框。
ql3eal8s2#
我也遇到过类似的问题。我有一个
DialogFragment
和一个TextInputLayout
,充当一个按钮。按下后,它会显示AlertDialog
窗口,该窗口在打开时会闪烁。在网站上的某个地方(对不起,忘记了来源)我发现了为什么对话框闪烁的提示-我相信这是因为
DialogFragment
和AlertDialog
在显示时都设置了暗淡的背景。对我有效的解决方案是禁用
AlertDialog
的调光。基本Fragment
和DialogFragment
之间的背景仍然变暗,但DialogFragment
和AlertDialog
之间的背景不变暗。这可能是一个理想的效果,也可能不是,在我的情况下,它是好的。要消除上述变暗效果,需要清除窗口的
FLAG_DIM_BEHIND
标志。就在我展示对话之前,我正在做这件事。Java:
Kotlin: