2010-10-17 73 views
2

我的佈局的一部分應該有兩個組件:頂部的ScrollView和底部的MapView。這兩個視圖應該只是父級的一半大小。如何在視圖中定義最大或相對尺寸?

我有父母的大小(我切換到這個佈局在一個點上,當我已經有了大小),但我不知道如何定義最大大小。此外,我認爲有一個解決方案不需要定義大小;例如通過類似Swing樣式的GridLayout,或者在某處定義重量,但是我沒有發現任何聽起來像會起作用的東西。

我目前的做法是這樣的位置,它定義了最小尺寸,這顯然只要滾動型增長超過母公司的一半高度分崩離析:

佈局(父是的LinearLayout):

<LinearLayout 
    android:id="@+id/result_layout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:visibility="gone" 
    > 

<ScrollView 
    android:id="@+id/result_scroll" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:orientation="vertical" 
    > 

<LinearLayout 
    android:id="@+id/result" 
    android:layout_height="fill_parent" 
    android:layout_width="wrap_content" 
    android:paddingRight="?android:attr/scrollbarSize" 
    android:orientation="vertical" 
/> 

</ScrollView> 

<view class="com.google.android.maps.MapView" 
    android:id="@+id/mapview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 

</LinearLayout> 

和代碼,之後我切換到它(totalWidth是父,viewHeight父的高度的一半的寬度):

LinearLayout.LayoutParams lp = 
      new LinearLayout.LayoutParams(totalWidth, viewHeight); 
scrollView.setLayoutParams(lp); 

回答

4

我的佈局的一部分應該有兩個組件:頂部的ScrollView和底部的MapView。這兩個視圖應該只是父級的一半大小。

把它們放在LinearLayout。將每個的高度設置爲0px。將每個的重量設置爲1

例如:

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

此外,我算起來也就是不需要定義大小...或者如果你不某處定義的權重

的解決方案告訴它明確有多大(「定義大小」)或隱含(「定義一個權重」),你如何期望知道它應該是「父母大小的一半」?

+0

我知道馬克是完成這項任務的!沒有佈局問題太大。 AFAIU,大多數Android佈局在「最小高度」的概念下運行,所以在測量之後,如果使用fill_parent,視圖將獲得測量的高度或整個父母的高度。 – EboMike 2010-10-18 01:06:00

+0

至於你的第二個問題 - 逗號是分開的例子,即「我認爲有一個解決方案,不需要定義的大小:[例子從這裏開始]使用GridLayout,或定義一個重量」。對不起,那是模棱兩可的。 – EboMike 2010-10-18 01:07:33

+0

順便說一句,我試過了,它有點作品,但沒有最低高度。 ScrollView最初有一個非常小的高度,所以地圖佔據了大部分屏幕。隨着ScrollView的增長,它佔用更多空間,但從未超過高度的一半,這很好。我會接受你的答案,但是你對如何製作父母的最小尺寸一半有任何想法嗎? – EboMike 2010-10-18 01:15:02