2012-12-17 100 views
2

我有一個自定義對話框,whick我從dialog.xml膨脹。當我打開對話框時,它看起來如下所示。我在listview和它下面的(確定)按鈕之間得到一些空間。我想消除列表視圖和它下面的Button之間的空間。 我該怎麼做,?Android的自定義對話框膨脹從佈局 - 對齊問題

enter image description here

dialog.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" > 

    <ListView 
     android:id="@+id/listViewDialog" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_above="@+id/button1" 
     android:layout_below="@+id/ImageView1" > 
    </ListView> 

    <CheckBox 
     android:id="@+id/checkBoxAll" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/listView1" 
     android:layout_alignParentRight="true" 
     android:layout_marginBottom="15dp" 
     android:layout_marginRight="25dp" 
     android:layout_marginTop="15dp" 
     android:text="" /> 

    <ImageView 
     android:id="@+id/ImageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginBottom="15dp" 
     android:layout_marginLeft="14dp" 
     android:layout_marginTop="15dp" 
     android:background="#FFFFBB33" 
     android:contentDescription="@string/app_name" 
     android:scaleType="center" 
     android:src="@drawable/alert_dialog_icon" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="128dp" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/listViewDialog" 
     android:layout_marginBottom="15dp" 
     android:layout_marginTop="15dp" 
     android:layout_toRightOf="@+id/ImageView1" 
     android:gravity="center_vertical" 
     android:text="Categories" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView1" 
     android:layout_alignBottom="@+id/textView1" 
     android:layout_toLeftOf="@+id/checkBoxAll" 
     android:text="All" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:text="OK" /> 

</RelativeLayout> 
+0

您是否嘗試將以下屬性設置爲按鈕:android:layout_below =「@ id/textView2」'? 編輯:如果你嘗試這樣,你必須刪除'android:layout_alignParentBottom =「true」'。 – Siggy

回答

2

這是很容易.. 你有2 approchase: 1)創建根realtivelayout有機器人:layout_height = 「wrap_cotent」,並在同時ListView具有相同的時間。這會將所有對話框的大小縮小到正確的大小(無空格)。 2)*更多推薦,有根是一個LinearLayout,並給它一些wightsum,然後把其他視圖放在這個根,並給他們一些layout_wight,這樣你知道在任何屏幕分辨率,你有相同的porportion組成你的屏幕。

+0

你的第二個解決方案對我來說並不清楚。? –

+0

不好解釋,它有點超出了編程的範圍 - 想想你的設計;如果你的「按鈕」按列表大小展開 - 如果列表很大,你不會看到他。如果列表很小,他將被設置在屏幕的中間位置(取決於列表的大小)。 )這是不是「正確的」behivor ..你應該rether有一個按鈕是在就地..(也許甚至在頁面的頂部),並讓列表滾動在自己的區域..(depanding靜態和dynmaic視圖在佈局中總是不好設計)。 – koby

0
maybe try like this: 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:weightSum="100" > 

     <LinearLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/RelativeLayout1" 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" 
      android:layout_weight="15" > 

      <CheckBox 
       android:id="@+id/checkBoxAll" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_above="@+id/listView1" 
       android:layout_alignParentRight="true" 
       android:layout_marginBottom="15dp" 
       android:layout_marginRight="25dp" 
       android:layout_marginTop="15dp" /> 

      <ImageView 
       android:id="@+id/ImageView1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 
       android:layout_marginBottom="15dp" 
       android:layout_marginLeft="14dp" 
       android:layout_marginTop="15dp" 
       android:background="#FFFFBB33" 
       android:contentDescription="@string/app_name" 
       android:scaleType="center" /> 

      <TextView 
       android:id="@+id/textView1" 
       android:layout_width="128dp" 
       android:layout_height="match_parent" 
       android:layout_above="@+id/listViewDialog" 
       android:layout_marginBottom="15dp" 
       android:layout_marginTop="15dp" 
       android:layout_toRightOf="@+id/ImageView1" 
       android:gravity="center_vertical" 
       android:text="Categories" 
       android:textAppearance="?android:attr/textAppearanceLarge" /> 

      <TextView 
       android:id="@+id/textView2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBaseline="@+id/textView1" 
       android:layout_alignBottom="@+id/textView1" 
       android:layout_toLeftOf="@+id/checkBoxAll" 
       android:text="All" 
       android:textAppearance="?android:attr/textAppearanceLarge" /> 
     </LinearLayout> 

     <ListView 
      android:id="@+id/listViewDialog" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="70" > 
     </ListView> 

     <LinearLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" 
      android:layout_weight="15" > 

      <Button 
       android:id="@+id/button1" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:text="OK" /> 
     </LinearLayout> 
    </LinearLayout> 

</LinearLayout>