2012-12-20 216 views
2

我正在嘗試執行我的第一個應用。根據百分比創建佈局

我在做一個包含四行的佈局。第一排(10%身高),第二排(40%身高),第三排(40%身高),第四排(10%身高)排名第一排。

現在,我正在使用垂直方向的線性佈局。使用權重總和和權重,我在每一行都有正確的比例。

但是,如果我在第二行和第三行使用線性佈局權重,那麼我會收到關於嵌套權重和不良性能的警告。我明白糟糕的性能問題,但我不知道如何解決我的問題。

我需要每個圖像是其父寬度的50%。

感謝您的幫助。

編輯:這是我想要完成 https://dl.dropbox.com/u/252856/androidlayout.jpg

+1

根據我的經驗,我一直擔心表現不好,但從未注意到它。我在過去讀過它,看起來這可能是一個問題,尤其是如果你對列表視圖(列表視圖的每一行具有嵌套權重)進行此操作,並在列表中顯示1000個視圖。但從靜態角度來看,您可能不必擔心 – Jameo

+0

hi @jameo感謝您的回覆。正如我所說,我正在學習android,並且我想從開始就以正確的方式進行。所以,如果谷歌說這是不好的方法,我想避免它 – Chux

+0

基本上,你可能能夠完成這個不同的方式,但它會過於複雜,並不適用於所有情況。只是因爲android警告你並不​​意味着它的__wrong__ – Jameo

回答

2

在您的具體情況,你可以使兩個ImageViews佔據父母的寬度的50%,而不使用權用這樣的塊:

<RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" 
    android:layout_weight="your_value"> 
    <View android:id="@+id/anchor" android:layout_width="0dp" 
      android:layout_height="match_parent" android:layout_centerHorizontal="true"/> 
    <ImageView android:layout_width="wrap_content" 
      android:layout_height="match_parent" android:layout_alignParentLeft="true" 
      android:layout_alignRight="@id/anchor" /> 
    <ImageView android:layout_width="wrap_content" 
      android:layout_height="match_parent" android:layout_alignParentRight="true" 
      android:layout_alignLeft="@id/anchor" /> 
</RelativeLayout> 
+0

,但我需要這兩個圖像是父母的50%,因爲圖像太大 – Chux

+0

@Chux您是否嘗試過我的代碼? 「RelativeLayout」組代表佈局圖片中的一個40%組。我編輯了我的答案。 – Luksprog

+0

它的工作原理非常感謝。我知道理解你的解決方案,你只需要在中心放置一個不可見的視圖,因爲你需要兩個柱子,並對齊每個圖像的邊緣。但是......如果我需要每行3個圖像呢? – Chux

0

你可能想看看,並考慮是否可以使你的佈局工作爲GridLayout快速樣機。它旨在處理您想要將UI元素排列爲大致類似網格的模式的情況,同時避免嵌套權重可能導致的性能問題。如果你的UI適合這種佈局,你可以通過利用它來實現simpler implementation and faster performance

我相信通過支持庫可以在API層7的早期支持GridLayout。