所以我看到我们可以使用灰色和白色(当setinverse ...)背景颜色时发出警报声。
要了解为什么我检查了sdk的themes.xml,检查它我被引导到drawables,在那里我意识到alertdialog背景不是以编程方式完成,而是通过一些图像。当我们使用LayoutInflater设置不同的背景颜色时,这些图像保证对话框顶部(标题区域)和底部(正上方按钮区域)有两条灰色(或反白色)水平线。
所以我的问题是,由于LayoutInflator是无用的并且猜测我必须子类alertdialog,你建议我用不同的backgroundcolor生成一个AlertDialog?我应该覆盖什么?
答案 0 :(得分:17)
我没有使用AlertDialog,而是使用了Dialog。要获得自定义外观:
1 - 创建对话框并删除标题区域(否则您将在顶部显示一个空白的灰色区域):
myDialog = new Dialog(this);
myDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
2 - 在xml中设计布局,并设置为对话框的内容:
myDialog.setContentView(R.layout.mydialog_layout);
3 - 如果布局不是圆角矩形,它将与对话框的圆角相交。因此,将布局设计为圆角矩形:
在mydialog_layout.xml中:
android:background = "@layout/mydialog_shape"
mydialog_shape.xml:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<gradient android:startColor="#FF0E2E57"
android:endColor="#FF0E2E57"
android:angle="225" android:paddingLeft="20dip"/>
<corners android:bottomRightRadius="5dp" android:bottomLeftRadius="5dp"
android:topLeftRadius="5dp" android:topRightRadius="5dp" android:paddingLeft="20dip"/>
</shape>
4 - 将监听器添加到活动中的按钮:
Button button = (Button)myDialog.findViewById(R.id.dialogcancelbutton);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myDialog.cancel();
}});
就是这样。
答案 1 :(得分:0)
我记得读过并非所有Android对话都是平等创建的。因此,如果您不想使用设备的Android版本附带的对话框;您需要从头开始编写一个全新的对话框。
编辑:
我认为您需要使用自定义对话框构建器类覆盖onCreateDialog。就像我说的,我从来没有这样做过。请记住,要保持Android MVC样式,您还需要以XML格式定义对话框。如果我要这样做;我可能会从XML布局开始,然后使用与常规对话框构建器类相同的方法编写自定义对话框类。很抱歉这么模糊,我自己还在学习Java和Android。
答案 2 :(得分:0)
太简单了。
Dialog d=builder2.create();
...
d.show();
d.getWindow().setBackgroundDrawableResource(R.drawable.mydialog_shape);