Android - Custom AlertDialog Background Color

前端 未结 3 1942
忘掉有多难
忘掉有多难 2020-12-10 06:32

So I see we can have alertdialogs with gray and white (when setinverse...) background colors.

To learn why I checked themes.xml of the sdk, checking it I was led to

相关标签:
3条回答
  • 2020-12-10 06:41

    so easy..

    Dialog d=builder2.create();
    ...
    d.show();
    d.getWindow().setBackgroundDrawableResource(R.drawable.mydialog_shape);
    
    0 讨论(0)
  • 2020-12-10 06:49

    I recall reading that not all Android Dialogs are created equally. Therefore, if you don't want to use the dialog that shipped with the device's Android version; You need to code a completely fresh dialog from the ground up.

    Edit:

    I think you need to override the onCreateDialog with a custom dialog builder class. Like I said, I've never done it. Remember, to keep with the Android MVC style, you need to define the dialog in XML as well. If I was going to do it; I would probably start with the XML layout, then code a custom dialog class using the same methods as a regular dialog builder class. Sorry to be so vague, I'm still learning Java and Android myself.

    0 讨论(0)
  • 2020-12-10 06:53

    Instead of using AlertDialog, I ended up using a Dialog. To get a custom look:

    1-Create the Dialog and remove the title area(Otherwise you'll get a blank gray area on top):

    myDialog = new Dialog(this);
    myDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    

    2-Design a layout in xml, and set as dialog's content:

    myDialog.setContentView(R.layout.mydialog_layout);
    

    3-If the layout is not a rounded rect, it will intersect with the rounded corners of the dialog box. So, design the layout as a rounded rect:

    in 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-Add listeners to the buttons in your activity:

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

    That's about it.

    0 讨论(0)
提交回复
热议问题