我有一个对话框,并在其中显示图标包的图标。根据我的应用主题和我想要动态决定的图标颜色,如果我需要在背景上显示图标或不显示(取决于图标是否在对话框背景上可见)。
这意味着:
任何想法如何做到这一点?有效地为对话框中的每个图标做这个...
或者解决问题的其他任何想法?
要解决的问题
将对话框背景与从icon =>计算出的颜色进行比较如果差异不够,请不要在图标后面绘制背景,如果没有,请绘制与图标不同的背景
如何有效地完成这项工作?
答案 0 :(得分:0)
你可以做的是制作一个显示对话框的通用功能。在函数的参数中,您可以传递上下文,图像和背景颜色本身。将其设为单例并从要显示对话框的位置调用它。调用函数很容易。我正在附加一个带有监听器的对话框。
public void showErrorDialogWithListener(Activity activity, String message, final View.OnClickListener onClickListener) {
try {
try {
if (errorDialog != null && errorDialog.isShowing()) {
errorDialog.dismiss();
}
} catch (Exception e) {
}
errorDialog = new Dialog(activity, R.style.DialogTheme);
errorDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
errorDialog.getWindow().getAttributes().windowAnimations = R.style.Animations_LoadingDialogFade;
errorDialog.setContentView(R.layout.dialog_error);
WindowManager.LayoutParams layoutParams = errorDialog.getWindow().getAttributes();
errorDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.gravity = Gravity.CENTER;
layoutParams.dimAmount = Constants.dialogDimAmount;
errorDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
errorDialog.getWindow().setAttributes(layoutParams);
errorDialog.setCancelable(true);
errorDialog.setCanceledOnTouchOutside(true);
LinearLayout mParentRl = (LinearLayout) errorDialog.findViewById(R.id.parentRl);
BaseActivity.overrideFonts(activity, mParentRl);
Button mBtnOk = (Button) errorDialog.findViewById(R.id.btnOk);
TextView messageTv = (TextView) errorDialog.findViewById(R.id.messageTv);
messageTv.setText(message);
mBtnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onClickListener.onClick(view);
errorDialog.dismiss();
}
});
errorDialog.show();
} catch (Exception e) {
e.printStackTrace();
}
}
这是一个只有一个按钮的对话框。希望这会有所帮助。