Android - 自定义AlertDialog背景颜色

ahm*_*rah 8 java android android-alertdialog

所以我看到我们可以使用灰色和白色(当setinverse ...)背景颜色的alertdialogs.

要了解为什么我检查了sdk的themes.xml,检查它我被引导到drawables,在那里我意识到alertdialog背景不是以编程方式完成,而是通过一些图像.当我们使用LayoutInflater设置不同的背景颜色时,这些图像保证对话框顶部(标题区域)和底部(正上方按钮区域)有两条灰色(或反白色)水平线.

所以我的问题是,由于LayoutInflator是无用的并且猜测我必须继承alertdialog,你建议我用不同的backgroundcolor生成一个AlertDialog?我应该覆盖什么?

ahm*_*rah 17

我没有使用AlertDialog,而是使用了Dialog.要获得自定义外观:

1 - 创建对话框并删除标题区域(否则您将在顶部获得一个空白的灰色区域):

myDialog = new Dialog(this);
myDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)

2 - 在xml中设计布局,并设置为对话框的内容:

myDialog.setContentView(R.layout.mydialog_layout);
Run Code Online (Sandbox Code Playgroud)

3 - 如果布局不是圆角矩形,它将与对话框的圆角相交.因此,将布局设计为圆角矩形:

在mydialog_layout.xml中:

android:background = "@layout/mydialog_shape"
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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();
}});
Run Code Online (Sandbox Code Playgroud)

就是这样.