我设计了一个自定义警报对话框,但黑色空间正在上面。警告框底部。我的布局代码如下所示。我试图在我的主要LinearLayout中给出负余量,但仍存在问题。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#000000"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/first_part"
android:orientation="horizontal"
android:layout_width="580px"
android:layout_height="90px"
android:background="#1c1c1c"
>
<ImageView android:id="@+id/ic_messageicon"
android:scaleType="fitXY"
android:layout_width="70px"
android:layout_height="70px"
android:layout_marginLeft="20px"
android:layout_marginTop="10px"
android:src="@drawable/ic_messagewarn"
/>
<TextView android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25px"
android:layout_marginLeft="15px"
android:textSize="28px"
android:typeface="sans"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:text="@string/errorTitle"
></TextView>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/first_part_line"
android:orientation="horizontal"
android:layout_width="580px"
android:layout_height="1px"
android:background="#626262"
>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/second_part"
android:orientation="horizontal"
android:layout_width="580px"
android:layout_height="120px"
android:background="#252525"
>
<TextView android:id="@+id/messagetext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:typeface="sans"
android:textColor="#FFFFFF"
android:textSize="25px"
android:layout_marginLeft="20px"
android:layout_marginTop="20px"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/third_part_line"
android:orientation="horizontal"
android:layout_width="580px"
android:layout_height="1px"
android:background="#aaaaaa"
>
</LinearLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/third_part"
android:orientation="horizontal"
android:layout_width="580px"
android:layout_height="90px"
android:background="#999999"
>
<Button android:id="@+id/yes"
android:scaleType="fitXY"
android:layout_width="236px"
android:layout_height="57px"
android:layout_marginTop="16px"
android:onClick="onClick"
android:text="@string/yes"
android:textColor="#000000"
android:textSize="20px"
android:textStyle="bold"
android:layout_marginLeft="27px"
android:background="@drawable/messagebutton"
/>
<Button android:id="@+id/no"
android:scaleType="fitXY"
android:layout_width="236px"
android:layout_height="57px"
android:layout_marginTop="16px"
android:layout_marginRight="27px"
android:onClick="onClick"
android:text="@string/no"
android:layout_alignParentRight="true"
android:textColor="#000000"
android:textSize="20px"
android:textStyle="bold"
android:background="@drawable/messagebutton"
/>
</RelativeLayout>
答案 0 :(得分:2)
值文件夹中的xml并添加此代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme" parent="android:Theme">
</style>
<style name="CustomDialogTheme" >
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:windowBackground">@color/transparent1</item>
<item name="android:windowIsFloating">false</item>
<item name="android:windowNoTitle">true</item>
</style>
并将此主题引用至您的对话框
Dialog dialog = new Dialog(activity, R.style.CustomDialogTheme);
然后将您的自定义Dialog Layout Xml文件设置为 setContentView 。
dialog.setContentView(R.layout.customdialog);
答案 1 :(得分:1)
如果您看到AlertDialog类源,您会看到大多数方法只是私有AlertController mAlert周围的代理方法(Facade)。
查看AlertController类源代码,您将看到4个有趣的成员变量:
private int mViewSpacingLeft;
private int mViewSpacingTop;
private int mViewSpacingRight;
private int mViewSpacingBottom;
private boolean mViewSpacingSpecified = false;
将mViewSpacingSpecified设置为true将删除对话框顶部和底部的边框。
通过更改此行正确完成此操作:
dialog.setView(layout);
为:
dialog.setView(layout, 0, 0, 0, 0);
参考此link
答案 2 :(得分:1)
你没有在最后关闭父LinearLayout
并且您使用#000000颜色代码进行父布局,这将在背景显示黑色
尝试更改底色颜色代码的机会。并使用
requestWindowFeature(Window.FEATURE_NO_TITLE);
在对话框类中,这将删除对话框标题,因此您的顶部颜色也将删除..