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 的宽度都相等? 我的父布局有问题,其中宽度和高度设置为 需要记住一件事:“layout_width”需要被视为“0dp”才能工作【参考方案2】:

尝试将 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 平均分配水平方向的主要内容,如果未能解决你的问题,请参考以下文章

xml Android自动水平滚动TextView

Android进阶 二十二 设置TextView文字水平垂直居中

Android进阶(二十二)设置TextView文字水平垂直居中

Android中TextView如何实现水平和垂直滚动

在方向更改上保存 TextView 的设置 - Android?

android如何实现textview水平垂直居中