【问题标题】:Android Listview Row LayoutAndroid Listview 行布局
【发布时间】:2013-10-03 19:46:51
【问题描述】:

我正在开发一个我认为简单的列表视图行布局,但我在让我的视图正确排列时遇到了一些麻烦。有 4 个 TextView 都在 LinearLayout 中使用 layout_weight 来适当地调整自己的大小。然而,我想不通的是如何一致地对齐它们,以便每个 TextView 的开始位置与其上方和下方的位置相同。



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#AAAAAA88">

    <TextView
        android:id="@+id/quality"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:layout_gravity="center_vertical|right"
        android:textColor="#ffffff"
        android:padding="5px"
    />

    <TextView
        android:id="@+id/route_name"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="3"
        android:layout_gravity="center_vertical|right"
        android:textColor="#ffffff"       
        android:padding="5px"           
    />

    <TextView
        android:id="@+id/route_grade"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:layout_gravity="center_vertical|right"
        android:textColor="#ffffff"       
        android:padding="5px"           
    />

    <TextView
        android:id="@+id/route_distance"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:layout_gravity="center_vertical|right"
        android:textColor="#ffffff"       
        android:padding="2px"           
    />        

</LinearLayout>

我尝试使用 :gravity 标签似乎不起作用。 LinearLayout 在这里是错误的方法吗?

作为一个编辑,我正在使用倾斜中的特定宽度值取得一些进展。现在来测试它在不同屏幕上的外观是否相同。

【问题讨论】:

    标签: android user-interface


    【解决方案1】:

    重力分配最小约束后剩余的可用空间,而不是总空间。

    因此,上下对齐不同的行,确保每行的剩余空间相等。实现此目的的一个好方法是硬编码每个元素所需的最小空间:

    android:layout_weight="2"
    android:layout_width="1dip"
    

    让每行的每个TextView的宽度为1dip,剩余的空间根据权重分割。

    【讨论】:

      【解决方案2】:

      您可以尝试使用RelativeLayout。尝试将 4 个 TextView 相对放置,3 个可以在 dp 中具有固定宽度,第 4 个可以占用剩余的可用空间。这样每个文本视图每次都会从固定位置开始。

      类似:

      <?xml version="1.0" encoding="utf-8"?>
      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent" >
      
      <TextView 
          android:id="@+id/text_1"
          android:layout_width="60dp"
          android:layout_height="wrap_content"
          android:layout_alignParentTop="true"
          android:layout_alignParentRight="true"
          android:gravity="left"
          android:padding="8dp"
          android:text="Text 1"/>
      <TextView 
          android:id="@+id/text_2"
          android:layout_width="60dp"
          android:layout_height="wrap_content"
          android:layout_alignTop="@+id/text_1"
          android:layout_toLeftOf="@+id/text_1"
          android:gravity="left"
          android:padding="8dp"
          android:text="Text 2"/>
      <TextView 
          android:id="@+id/text_3"
          android:layout_width="60dp"
          android:layout_height="wrap_content"
          android:layout_alignTop="@+id/text_1"
          android:layout_toLeftOf="@+id/text_2"
          android:gravity="left"
          android:padding="8dp"
          android:text="Text 3"/>
       <TextView 
          android:id="@+id/text_4"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:layout_alignTop="@+id/text_1"
          android:layout_toLeftOf="@+id/text_3"
          android:layout_alignParentLeft="true"
          android:gravity="left"
          android:padding="8dp"
          android:text="Text 4"/>
      
      </RelativeLayout>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-26
        • 2018-02-02
        • 2012-01-13
        • 1970-01-01
        • 1970-01-01
        • 2013-12-25
        相关资源
        最近更新 更多