代码之家  ›  专栏  ›  技术社区  ›  ahmet emrah

Android-自定义警报对话框背景色

  •  8
  • ahmet emrah  · 技术社区  · 14 年前

    3 回复  |  直到 5 年前
        1
  •  17
  •   ahmet emrah    14 年前

    我没有使用AlertDialog,而是使用了一个对话框。要获得自定义外观:

    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();
    }});
    

    就是这样。

        2
  •  0
  •   Martinez    13 年前

    我记得我读到,并不是所有的Android对话框都是平等创建的。因此,如果您不想使用设备Android版本附带的对话框,则需要从头开始编写一个全新的对话框。

    编辑:

    我认为您需要用一个自定义的对话生成器类来重写onCreatediaLog。就像我说的,我从来没有做过。记住,要保持Android MVC风格,还需要用XML定义对话框。如果我打算这样做,我可能会从XML布局开始,然后使用与常规对话框生成器类相同的方法编写自定义对话框类。抱歉这么含糊,我自己还在学习Java和Android。

        3
  •  0
  •   KnIfER    5 年前

    很容易。。

    Dialog d=builder2.create();
    ...
    d.show();
    d.getWindow().setBackgroundDrawableResource(R.drawable.mydialog_shape);