对话框自定义宽度高度问题

时间:2017-04-13 10:36:25

标签: android android-dialog

我试图将自定义宽度和高度分配给我的自定义对话框 , 代码即时通讯使用平板电脑lolipop及以上 但是在运行android kitkat的手机上的对话框顶部留下了一个白色的补丁。

enter image description here

代码段

Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog_documentationissue_notification);
dialog.setCancelable(true);

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int width = (int) (displaymetrics.widthPixels * 0.90);
int height = (int) (displaymetrics.heightPixels * 0.70);
dialog.getWindow().setLayout(width,height);
//dialog.getWindow().getAttributes().windowAnimations = R.style.NotificationDialogAnimation;
dialog.show();

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:background="@android:color/transparent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.15"
        android:background="#3F51B5"
        android:orientation="vertical">

        <View
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.85"
        android:background="@color/white"
        android:orientation="vertical">

        <View
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>

</LinearLayout>

3 个答案:

答案 0 :(得分:3)

您应该在 setContentView 之前添加 requestFeature(Window.FEATURE_NO_TITLE)

 dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); //Optional
 dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
 dialog.setContentView(R.layout.dialog_documentationissue_notification);

答案 1 :(得分:0)

白色区域用于标题,您可以通过这种方式隐藏标题。

 dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before     
 dialog.setContentView(R.layout.logindialog);

答案 2 :(得分:0)

解决方案1:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
在setContentView()之前

解决方案2: 添加自定义样式

<style name="myDialog" parent="android:style/Theme.Dialog">
   <item name="android:windowNoTitle">true</item>
</style>

然后在清单文件中添加此行

<activity android:name=".youractivity" android:theme="@style/myDialog"></activity>

谢谢,