2011-08-30 67 views
0

我有一个布局,其中包含我的Android视图中的三行或段。如何拉伸UI元素以填充视图上的垂直空间?

第一个布局区域具有基于区域内容的固定高度:layout_height =“wrap_content”。

下一个段将包含一个ListView,它内置了滚动功能,我希望这样可以占用可用的屏幕空间。

最后一段总是会有一个基于绝对值或:layout_height =“32dp”的固定高度。我希望这个第三段“停靠”到视图的底部。

仅供参考下面的XAML完成我想要的东西

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="auto" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="32" /> 
    </Grid.RowDefinisions> 
</Grid> 

这是可能通过Android的布局XML?如果是的话,这怎么能做到。

回答

5

设置 机器人:layout_height = “FILL_PARENT”, 机器人:layout_height = “match_parent” 或 机器人:layout_weight = “1”。

后者将在其父级布局中占用剩余的所有未使用空间,前者有时会强制其他元素离开视图。

+1

从未见过“match_parent”,但android:layout_weight =“1”以及android:height =“0dp”的技巧。 – Kevin

+1

如果您使用的是API级别8或以上,请使用'match_parent'而不是'fill_parent'。请参阅http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html。这是替代品。 – kabuko

0

您是否尝试过layout_width =“fill_parent”?

2

这绝对有可能。您可以通过多种方式来实现,我认为最简单的方法就是使用LinearLayout。喜欢的东西:

<LinearLayout layout_height="fill_parent"> 
    <firstitem layout_height="wrap_content" layout_width="fill_parent" /> 
    <ListView layout_height="fill_parent" layout_width="fill_parent" /> 
    <bottomitem layout_height="32dp" layout_width="fill_parent" /> 
</LinearLayout> 

使用dpspsp通常用于字体大小,dp用于其他所有内容。

顺便说一句,这是一个很好的guide让你开始使用通用布局对象。

+0

是啊 - “dp”不是“sp”这就是我的意思:)良好的说明 – Kevin

+0

就像一个供参考 - 在这个答案的XML是我的原始方法,它没有奏效。 ListView项目中的第二个“fill_parent”占据了屏幕的其余部分,并将底部项目从屏幕中移出。 – Kevin

+0

啊,我有时候见过这种情况。你会想要使用'layout_weight'然后你注意到。我通常更喜欢'layout_height ='wrap_content''over'0dp',但是两者都应该工作。 – kabuko