Android无边界对话框



Answers

这是我的解决方案,获得一个只显示您的内容的对话框。

    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 //位于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 //也位于那里

<?xml version="1.0" encoding="utf-8"?>
<resources>
       <color name="transparent_color">#00000000</color>
</resource>
Question

我使用AlertDialog.Builder创建了一个AlertDialog,但是对话边框在屏幕上占用了太多的空间。 如何删除边框? 我已经尝试使用另一个Activity来模拟具有透明背景的对话框,但对话框被反复使用,并且每次创建新的Activity都会引入大量的延迟。

这里的答案提到,它可以在ApiDemos中找到,但我似乎无法找到它。




如果你有2个边框,你需要使用一个ContextThemeWrapper,它将只显示一个边框,如你所愿:)

ContextThemeWrapper wrapper = new ContextThemeWrapper(this, android.R.style.Theme_Holo);
final LayoutInflater inflater = (LayoutInflater) wrapper.getSystemService(LAYOUT_INFLATER_SERVICE);
AlertDialog.Builder builder = new AlertDialog.Builder(wrapper);



试试这个:D

 Dialog popUpView= new Dialog(this);
 popUpView.getWindow().setBackgroundDrawable(new ColorDrawable(0));



在您的资源文件中,创建一个名为例如null_image.xml的xml文件,其中包含以下内容:

<?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>

在你的java代码中,获取对话框窗口并将xml文件设置为drawable资源,如下所示:根据你的上下文:

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

就是这样,享受。




Related