2013-03-27 97 views
0

我想做一些非常简单的事情。我想要一个顶部有一个微调器的布局,接着是一个列表视图,然后是最底部的一个线性布局,它包装了一些按钮。我希望列表视图能够展开,以填充微调框和按钮之间的空间,无论窗口有多大。我一直在尝试用线性布局封装所有三个元素,并且我已经尝试了可以​​考虑的Layout_Height的每个Wrap Content和Fill Parent的组合,但除非我硬编码列表视图Layout_Height来说出300 dip,这些按钮被推送关闭屏幕。我知道必须有一个简单的方法来做到这一点,但我在我的智慧结局。我尝试了所有我能想到的。简单的Android布局问题

下面是与硬编码高度一起使用的代码。

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

<Spinner 
    android:id="@+id/fileType" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

<ListView 
    android:id="@+id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="300dip" /> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="bottom" 
    android:gravity="bottom" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/ManageFiles_DeleteItem" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_margin="5dip" 
      android:layout_weight="1" 
      android:text="Delete item" /> 

     <Button 
      android:id="@+id/ManageFiles_DeleteAll" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_margin="5dip" 
      android:layout_weight="1" 
      android:text="Delete all" /> 

     <Button 
      android:id="@+id/ManageFiles_DisplayItem" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_margin="5dip" 
      android:layout_weight="1" 
      android:text="Display item" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/ManageFiles_OKcustom" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_margin="10dip" 
      android:layout_weight="1" 
      android:text="OK" /> 

     <Button 
      android:id="@+id/ManageFiles_CancelCustom" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_margin="10dip" 
      android:layout_weight="1" 
      android:text="Cancel" /> 
    </LinearLayout> 
</LinearLayout> 

`

+0

什么是你的设备的总高度,你需要什么高度为每个微调,列表视图,LinearLayout中 – 2013-03-27 04:20:00

+0

@Arju,你在想什么样的框架呢?你真的在想Android设备吗? – 2013-03-27 04:43:06

回答

0

使用以下

android:weightSum="Your total length" //in your main layout 

android:layout_weight="" //in each of your listview,spinner,linearlayout 

例如:如果u需要为所有3个要素使用

android:weightSum="3" 

然后在

Spinner 
android:layout_weight="1" 
/> 

ListView 
android:layout_weight="1" 
/> 

LinearLayout 
android:layout_weight="1" 
/> 
等于空间0
0

使用重量,给列表视图两个权重,每个权重为微调和包含按钮的底部布局,然后可以改变重量并查看哪些更适合您。

+0

这似乎没有工作。当名单被填充时,它漂浮在顶部,并不是很高。底部的按钮布局走到了屏幕的中间。为什么这么难??? – Don 2013-03-27 05:49:47

+0

你忘了告诉我一个重要的信息!为此,您必须将所有三个元素的layout_height设置为0px。现在它工作了! – Don 2013-03-27 06:00:03

+0

你必须这样做,实际上我曾尝试编辑你发布的布局并将其发回,但是有一些与stackoverflow编辑器的格式问题,所以我不能回发 – user2041902 2013-03-27 12:42:55

1

您可以尝试简单的东西作为

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<Spinner 
    android:id="@+id/spinner1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@id/spinner1" 
    android:layout_above="@+id/button1" > 
</ListView> 

<Button 
    android:id="@id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:text="Button1" /> 

<Button 
    android:id="@id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:text="Button2" /> 

的技巧是使用RelativeLayout的,而不是LinearLayout中。

+0

谢谢,我不知道相对布局。我用另一个建议来使用layout_weight,它解决了这个问题,但我想我现在会尝试使用Relative Layout来查看它是否有效,然后我将把它放在我的曲目中。 – Don 2013-03-27 06:03:44

0

试试像这样它会适合所有屏幕尺寸。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<LinearLayout 
    android:id="@+id/ftr_btn" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:gravity="bottom" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/ManageFiles_DeleteItem" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_margin="5dip" 
      android:layout_weight="1" 
      android:text="Delete item" /> 

     <Button 
      android:id="@+id/ManageFiles_DeleteAll" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_margin="5dip" 
      android:layout_weight="1" 
      android:text="Delete all" /> 

     <Button 
      android:id="@+id/ManageFiles_DisplayItem" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_margin="5dip" 
      android:layout_weight="1" 
      android:text="Display item" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/ManageFiles_OKcustom" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_margin="10dip" 
      android:layout_weight="1" 
      android:text="OK" /> 

     <Button 
      android:id="@+id/ManageFiles_CancelCustom" 
      android:layout_width="fill_parent" 
      android:layout_height="40dip" 
      android:layout_margin="10dip" 
      android:layout_weight="1" 
      android:text="Cancel" /> 
    </LinearLayout> 
</LinearLayout> 

<Spinner 
    android:id="@+id/fileType" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" /> 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/ftr_btn" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/fileType" > 
</ListView> 

+0

这是我正在寻找的解决方案。它完美的作品。谢谢。 – Don 2013-03-28 05:13:29

+0

@唐永远欢迎您。 – Yugesh 2013-03-28 13:28:58