android layout_weight挤压视图太薄

时间:2013-05-14 14:36:05

标签: android android-layout

我似乎无法弄清楚如何有效地使用android的layout_weight属性。我正在尝试创建一个有三个textView的自定义listView。主textView位于左上角,然后我有一个位于右上角的文本视图,然后是第三个位于主textView下面的文本视图。我希望主要和右上两个在一些水平轴上,但我希望主textView占据宽度的70%,而另一个textView占用剩余的30%。无论我分配给主要和右侧textView的重量是什么,主要的textView总是更大,并且挤压正确的数据textView太简单了。

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"/>

4 个答案:

答案 0 :(得分:0)

在您想要成为70%的项目上设置layout_weight="30",在您想要成为30%的项目上设置layout_weight="70"。这应该有希望解决你的问题。

答案 1 :(得分:0)

您需要在容器中定义权重总和。在您的情况下,这看起来像这样(只包括您需要的相关属性):

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

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

答案 2 :(得分:0)

我需要做几件事。

  1. 将weightSum分配给容纳TextViews的LinearLayout
  2. 然后我需要将TextViews的layout_width更改为“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="..."/>
    

答案 3 :(得分:0)

你只需要更改android:layout_width =&#34; wrap_content&#34;到android:layout_width =&#34; 0dp&#34;在两个TextViews

android:layout_width="0dp"

不需要android:weightSum。