Android Borderless Dialog

后端 未结 8 1810
囚心锁ツ
囚心锁ツ 2020-12-02 14:29

I have created an AlertDialog using AlertDialog.Builder, but the Dialog border takes up too much space on the screen. How do I remove the border? I have tried using another

相关标签:
8条回答
  • 2020-12-02 15:02

    try this :D

     Dialog popUpView= new Dialog(this);
     popUpView.getWindow().setBackgroundDrawable(new ColorDrawable(0));
    
    0 讨论(0)
  • 2020-12-02 15:07

    You can ask the builder to enforce inverse background. Worked for me to display a borderless splash screen with a png source.

    0 讨论(0)
  • 2020-12-02 15:12

    Here is my solution, to get a dialog that shows only your content.

        Dialog dialog = new Dialog(this,R.style.ThemeDialogCustom);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    
        //you can move the dialog, so that is not centered
        // dialog.getWindow().getAttributes().y = 50; //50 should be based on density
    
        dialog.setContentView(yourLinearLayout);
        dialog.setCancelable(true);
        //dialog.setOnCancelListener(cancelListener);
        dialog.show();
    

    themes.xml // located in project /res/values

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
       <style name="ThemeDialogCustom">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowBackground">@color/transparent_color</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
       </style>
    </resources>
    

    colors.xml // also located there

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
           <color name="transparent_color">#00000000</color>
    </resource>
    
    0 讨论(0)
  • 2020-12-02 15:16

    I added a transparent pixel to drawable and used the following code :

    dialog.getWindow().setBackgroundDrawableResource(R.drawable.transpix);
    
    0 讨论(0)
  • 2020-12-02 15:22

    In your resources file create a xml file named for e.g. null_image.xml, with the following content:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <solid android:color="#0000" />
    
    <size
        android:height="1dp"
        android:width="1dp" />
    
     </shape>
    

    In your java code, fetch the dialog window and set the xml file as the drawable resource, like this: Depending on your context:

    Dialog dialog = new Dialog(getContext());
    Window window = dialog.getWindow();
    window.setBackgroundDrawableResource(R.drawable.null_image);
    

    That's it, enjoy.

    0 讨论(0)
  • 2020-12-02 15:23

    Alright, I'll answer my own question. Basically, instead of using AlertDialog.Builder, create a regular Dialog using it's constructor, and use a suitable theme instead of the default Dialog theme.

    So your code would look something like this:

    Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar);
    

    Hope this helps someone else.

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