Android Textview 平均分配水平方向
Posted
技术标签:
【中文标题】Android Textview 平均分配水平方向【英文标题】:Android Textview equally distribute horizontal orientation 【发布时间】:2016-01-01 18:54:07 【问题描述】:我想在列表视图中显示值,其中行的所有 5 个值在所有维度上都应采用相同的宽度和高度 这是我的 list_view.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/tabsLayout"
android:layout_
android:layout_
android:layout_marginTop="12.0dip"
android:background="@color/transparent"
android:orientation="horizontal">
<TextView
android:id="@+id/text1"
android:layout_
android:layout_
android:layout_marginBottom="5.0dip"
android:layout_marginLeft="20dp"
android:layout_marginTop="5.0dip"
android:layout_weight="1"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="8.0dip"
android:textStyle="bold" />
<TextView
android:id="@id/text2"
android:layout_
android:layout_
android:layout_marginBottom="5.0dip"
android:layout_marginTop="5.0dip"
android:layout_weight="1"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="8.0dip"
android:textStyle="bold" />
<TextView
android:id="@id/text3"
android:layout_
android:layout_
android:layout_marginBottom="5.0dip"
android:layout_marginTop="5.0dip"
android:layout_weight="1"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="8.0dip"
android:textStyle="bold" />
<TextView
android:id="@id/text4"
android:layout_
android:layout_
android:layout_marginBottom="5.0dip"
android:layout_marginTop="5.0dip"
android:layout_weight="1"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="8.0dip"
android:textStyle="bold" />
<TextView
android:id="@id/text5"
android:layout_
android:layout_
android:layout_marginBottom="5.0dip"
android:layout_marginRight="20dp"
android:layout_marginTop="5.0dip"
android:layout_weight="1"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="8.0dip"
android:textStyle="bold" />
</LinearLayout>
但水平分布并不均匀。在预览中它显示了 5 个矩形文本视图,但是当它出现在文本视图上的列表视图值时,文本视图将自动适应,以便文本视图缩小。
【问题讨论】:
让我知道为什么要投反对票?请解释一下。 【参考方案1】:您应该为每个TextView
设置layout_weight="0.20"
,这意味着每个TextView
将占用20% 的空间。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:id="@+id/tabsLayout"
android:layout_marginTop="12.0dip"
android:orientation="horizontal">
<TextView
android:id="@+id/text1"
android:text="EEEEEEEE"
android:layout_
android:layout_
android:layout_weight="0.20"
android:layout_marginBottom="5.0dip"
android:layout_marginTop="5.0dip"
android:gravity="center"
android:textColor="#000000"
android:textSize="8.0dip"
android:textStyle="bold" />
<TextView
android:id="@+id/text2"
android:text="DDDDDDDDD"
android:layout_
android:layout_
android:layout_weight="0.20"
android:layout_marginBottom="5.0dip"
android:layout_marginTop="5.0dip"
android:gravity="center"
android:textColor="#000000"
android:textSize="8.0dip"
android:textStyle="bold" />
<TextView
android:id="@+id/text3"
android:text="CCCCCCCCCC"
android:layout_
android:layout_
android:layout_weight="0.20"
android:layout_marginBottom="5.0dip"
android:layout_marginTop="5.0dip"
android:gravity="center"
android:textColor="#000000"
android:textSize="8.0dip"
android:textStyle="bold" />
<TextView
android:id="@+id/text4"
android:text="BBBBBBBBBBB"
android:layout_
android:layout_
android:layout_weight="0.20"
android:layout_marginBottom="5.0dip"
android:layout_marginTop="5.0dip"
android:gravity="center"
android:textColor="#000000"
android:textSize="8.0dip"
android:textStyle="bold" />
<TextView
android:id="@+id/text5"
android:text="AAAAAAAAAA"
android:layout_
android:layout_
android:layout_weight="0.20"
android:layout_marginBottom="5.0dip"
android:layout_marginTop="5.0dip"
android:gravity="center"
android:textColor="#000000"
android:textSize="8.0dip"
android:textStyle="bold" />
</LinearLayout>
【讨论】:
不,它不起作用。所有的 textview 都会自动适应,因此 linerlayout 会缩小到整个 textview 的确切宽度。 我刚刚测试了它,它可以满足你的要求,所有 5 个 TextView 的宽度都相等? 我的父布局有问题,其中宽度和高度设置为尝试将 weightSum 添加到 linearLayout:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:id="@+id/tabsLayout"
android:layout_marginTop="12.0dip"
android:orientation="horizontal"
android:weightSum="5">
【讨论】:
【参考方案3】:布局权重应该可以工作,尝试删除 Textview 的重力属性。如果仍然无法正常工作,请使用 weightSum,为您的 LinearLayout 设置 weightSum 并将其分发到 TextViews
例如:
<LinearLayout
...
...
android:weightSum="5">
<TextView
..
..
android:layout_weight="1"/>
<TextView
..
..
android:layout_weight="1"/>
<TextView
..
..
android:layout_weight="1"/>
<TextView
..
..
android:layout_weight="1"/>
<TextView
..
..
android:layout_weight="1"/>
</LinearLayout>
这可能行得通。
【讨论】:
以上是关于Android Textview 平均分配水平方向的主要内容,如果未能解决你的问题,请参考以下文章
Android进阶 二十二 设置TextView文字水平垂直居中
Android进阶(二十二)设置TextView文字水平垂直居中