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