2013-05-14 52 views
0

我似乎無法弄清楚如何有效地使用android的layout_weight屬性。我試圖創建一個自定義的listView,它有三個textView。主要的textView駐留在左上角,然後我有一個文本視圖,位於右上方,然後是第三個位於主要textView下面的視圖。我希望主軸和右上兩個軸位於某個水平軸上,但我希望主要textView佔用約70%的寬度,而其他textView佔用剩餘的30%。無論我分配給主要和正確的textView的重量如何,主要的textView總是較大,並擠壓正確的數據textView wayyy太薄。android layout_weight擠壓視圖太薄

enter image description here

我的代碼:

<LinearLayout android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" 
       android:padding="5dip" 
       android:id="@+id/Llayout"> 
<!-- Title--> 
<TextView 
     android:id="@+id/primaryTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Loading some tadglkj dgjg sadlgkj dgksgj sgj sdgk" 
     android:textColor="#040404" 
     android:typeface="sans" 
     android:textSize="18dip" 
     android:textStyle="bold" 
     android:paddingTop="0dp" 
     android:background="#888" 
     android:layout_weight="4"/> 

<!-- Right Data --> 
<TextView 
     android:id="@+id/rightData" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="10" 
     android:layout_marginRight="5dip" 
     android:textSize="12dip" 
     android:textColor="#B53021" 
     android:textStyle="bold" 
     android:background="#bada55" 
     android:text="1.3 mi"/> 
</LinearLayout> 

<!-- Secondary title --> 
<TextView 
     android:id="@+id/secondaryTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#343434" 
     android:textSize="12dip" 
     android:layout_marginTop="1dip" 
     android:text="hello this is some other data"/> 

+0

您必須在其父項上添加Weightsum,在本例中爲線性佈局。 – Gilson 2013-05-14 14:38:02

+0

好吧,我給父母添加了10的權重,然後將兩個視圖的layout_weight設爲5,期望寬度相同。主要的textView仍然大於50% – David 2013-05-14 14:42:42

+0

如果你想要的寬度是相同的,只需將android:layout_weight =「1」添加到這兩個元素(並且不要把weightSum屬性放在你的容器中) – Booger 2013-05-14 14:43:41

回答

0

我需要做一些事情。

  1. 分配weightSum我的LinearLayout,裏面圈着TextViews
  2. 然後我需要改變TextViews爲 「0dp」 而不是 「WRAP_CONTENT」

    <LinearLayout android:layout_width="fill_parent" 
           android:layout_height="wrap_content" 
           android:orientation="horizontal" 
           android:id="@+id/Llayout" 
           android:weightSum="10"> 
    
        <!-- Title--> 
        <TextView 
          android:id="@+id/primaryTitle" 
          android:layout_height="wrap_content" 
          android:text="Loading..." 
          android:textColor="#040404" 
          android:typeface="sans" 
          android:textSize="18dip" 
          android:textStyle="bold" 
          android:paddingTop="0dp" 
          android:layout_width="0dp" 
          android:layout_weight="8"/> 
    
        <!-- Right Data --> 
        <TextView 
          android:id="@+id/rightData" 
          android:layout_width="0dp" 
          android:layout_height="wrap_content" 
          android:layout_weight="2" 
          android:gravity="right" 
          android:layout_marginRight="5dip" 
          android:textSize="12dip" 
          android:textColor="#B53021" 
          android:textStyle="bold" 
          android:text="..."/> 
    </LinearLayout> 
    
    <!-- Secondary title --> 
    <TextView 
         android:id="@+id/secondaryTitle" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textColor="#343434" 
         android:textSize="12dip" 
         android:layout_marginTop="1dip" 
         android:text="..."/> 
    
    的layout_width

0

在要爲70%設置layout_weight="30"和項目要在30項%設置了layout_weight="70"。這應該有希望解決你的問題。

0

您需要您在容器中定義重量總和。在你的情況下,這看起來像這樣(只包括你需要的相關屬性):

<LinearLayout 
     android:weightSum="1"> 
<!-- Title--> 
<TextView 
    android:layout_weight=".7"/> 

<!-- Right Data --> 
<TextView 
     android:layout_weight=".3"/> 
</LinearLayout> 
+0

你的意思是把layout_weight用於正確的數據textview嗎? – David 2013-05-14 14:43:45

+0

是的,我只是回答一般情況下,這是使用重量總和的正確方法。 – Booger 2013-05-14 14:44:26

0

你只需要改變的android:layout_width = 「WRAP_CONTENT」 到Android:layout_width = 「0dp」 在兩個TextViews

android:layout_width="0dp" 

Android的:不需要weightSum。