【问题标题】:Android Textview equally distribute horizontal orientationAndroid Textview 平均分配水平方向
【发布时间】: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_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="12.0dip"
    android:background="@color/transparent"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/text1"
        android:layout_width="0dp"
        android:layout_height="40.0dip"
        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_width="0dp"
        android:layout_height="40.0dip"
        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_width="0dp"
        android:layout_height="40.0dip"
        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_width="0dp"
        android:layout_height="40.0dip"
        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_width="0dp"
        android:layout_height="40.0dip"
        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 个矩形文本视图,但是当它出现在文本视图上的列表视图值时,文本视图将自动适应,以便文本视图缩小。

【问题讨论】:

  • 让我知道为什么要投反对票?请解释一下。

标签: android android-listview textview


【解决方案1】:

您应该为每个TextView 设置layout_weight="0.20",这意味着每个TextView 将占用20% 的空间。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/tabsLayout"
    android:layout_marginTop="12.0dip"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/text1"
        android:text="EEEEEEEE"
        android:layout_width="0dp"
        android:layout_height="40.0dip"
        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_width="0dp"
        android:layout_height="40.0dip"
        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_width="0dp"
        android:layout_height="40.0dip"
        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_width="0dp"
        android:layout_height="40.0dip"
        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_width="0dp"
        android:layout_height="40.0dip"
        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_width="match_parent"
    android:layout_height="match_parent"
    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>
    

    这可能行得通。

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 2016-10-10
      • 1970-01-01
      • 2021-08-07
      相关资源
      最近更新 更多