簡體   English   中英

自定義警報對話框中的空白

[英]Black space in custom alert Dialog

我設計了一個自定義警報對話框,但是警報框的頂部和底部有黑色空間。 我的布局代碼如下。我試圖在我的主要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>

值文件夾中的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);

然后將您的自定義對話框布局Xml文件設置為setContentView

dialog.setContentView(R.layout.customdialog);

如果您查看AlertDialog類的源代碼,您將看到大多數方法只是圍繞私有AlertController mAlert的代理方法(外觀)。

查看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);

引用此鏈接

您沒有在最后關閉父級LinearLayout

並且您將#000000顏色代碼用於父級布局,這將在背景上顯示黑色

嘗試更改顏色代碼,您的底色將會出現。 和使用

 requestWindowFeature(Window.FEATURE_NO_TITLE);

在對話框類中,這將刪除對話框標題,因此頂部顏色也將刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM