2011-08-30 53 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