我正在尝试在游戏中更改AlertDialog的属性,目前我正在用这种方式构建它:
private static final int DIALOG_INFO = 1;
private Dialog dialog; @Override protected Dialog onCreateDialog(int id) { AlertDialog.Builder builder = new AlertDialog.Builder(this); switch (id) { case DIALOG_INFO: builder.setTitle("Game Information - Diego 1.0.1"); builder.setIcon(R.drawable.icon); builder.setMessage("Test there \n\n"); builder.setCancelable(true); dialog = builder.create(); dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON); break; } return dialog; }
如果玩家点击了某个按钮,我就会用这种方式显示这个对话框:
showDialog(DIALOG_INFO);
一切正常,但我决定用这种方式改变这个对话框中使用的字体外观:
TextView textView =((TextView) dialog.findViewById(android.R.id.message));
textView.setTextColor(Color.LTGRAY);
textView.setTextSize(13);
textView.setGravity(Gravity.CENTER);
但是代码只能工作,如果我把这段代码放在showDialog(DIALOG_INFO)之后;这意味着我每次显示对话框时都必须创建新对象(TextView textView = ...),我的问题是,创建对话框时我不能只创建一次吗?
提前致谢。
答案 0 :(得分:1)
您可以为AlertDialog设置自己的contentView:
.....
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rootView = (ViewGroup) inflater.inflate(R.layout.YOUR_DIALOG_LAYOUT, null);
builder.setView(rootView);
.....
以xml标记对话框布局。