2012-06-18 60 views
0

我有一個這樣的佈局,我想在視圖上方顯示一個標籤,然後在下面重複。在相對佈局設置視圖高度

這裏是我的代碼...

<RelativeLayout 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/speedLbl" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="20dp" 
     android:text="@string/speed" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <View 
     android:id="@+id/speedGraph" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_marginBottom="4dp" 
     android:layout_below="@+id/speedLbl" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:background="@color/blueColour" /> 

    <TextView 
     android:id="@+id/distanceLbl" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="20dp" 
     android:layout_below="@+id/speedGraph" 
     android:text="@string/distance" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <View 
     android:id="@+id/distanceGraph" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/distanceLbl" 
     android:layout_marginBottom="4dp" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:background="@color/blueColour" /> 

</RelativeLayout> 

的問題是,我不希望設置高度爲兩種觀點,我希望他們能夠動態地根據屏幕大小而改變。
我嘗試使用layout_weight,但它不喜歡它嵌套在另一箇中的事實。

任何人都可以看到這個問題的另一種解決方案??

+0

我不明白你的問題,你能澄清一下嗎? – pawelzieba

+0

我希望它們具有相同的尺寸,但我不想設置特定的尺寸,因爲我想垂直填充整個屏幕。所以我不想使用40dp或其他大小可能是一個百分比。 – StuStirling

+0

@ DiscoS2所以你基本上希望每一組'TextView' +'View'佔據父親'RelativeLayout'高度的一半? – Luksprog

回答

1

你可以用一個小竅門避免雙重權重問題。你可以在父RelativeLayout的垂直中心設置空View和兩組位置上方和下方是View,像這樣:

<RelativeLayout 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:orientation="vertical" > 

    <View android:id="@+id/anchor" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_centerVertical="true/> 

    <TextView 
     android:id="@+id/speedLbl" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="20dp" 
     android:text="@string/speed" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <View 
     android:id="@+id/speedGraph" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_marginBottom="4dp" 
     android:layout_below="@id/speedLbl" 
     android:layout_above="@id/anchor" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:background="@color/blueColour" /> 

    <TextView 
     android:id="@+id/distanceLbl" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="20dp" 
     android:layout_below="@id/anchor" 
     android:text="@string/distance" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <View 
     android:id="@+id/distanceGraph" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/distanceLbl" 
     android:layout_alignParentBottom="true" 
     android:layout_marginBottom="4dp" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:background="@color/blueColour" /> 

</RelativeLayout> 

你也應該只使用@+id/...符號時,你首先聲明ID ,在下一個id事件你應該使用@id/...

+0

非常感謝 – StuStirling

+0

的提示,您應該使用「Space」而不是View作爲錨點,Space可以節省更多內存和資源。 – Alaa

0

您可以通過layout_weight實現動態屏幕大小。但在此之前,您只需嘗試使用layout_weight即可顯示線性佈局,併爲視圖和文本視圖提供適當的權重。它幾乎可以解決你的問題。不要使用重量相對佈局。重量在相對佈局中不起作用。

+0

我已經使用了一個帶重量的線性佈局,問題是我得到一個關於使用嵌套的layout_weight標籤的警告,說它對性能不好,所以我試圖找到另一種方式做到這一點,因此轉向相對佈局。 – StuStirling

+0

js lint顯示警告。它不會影響你的表現。 – Akilan

相關問題