2012-12-17 62 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>