【问题标题】:How do I align values inside my listview list item?如何对齐列表视图列表项中的值?
【发布时间】:2015-03-03 09:11:05
【问题描述】:

如何将“休假类型”和“可用休假”对齐到列表的中心,并将它们的值对齐到相应标题的中心?请帮我。这是我制作的 xml 代码,但它不能满足我的目的

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:background="@drawable/list_selector"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/leave_type_header"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_gravity="left"
            android:textColor="#000000" />

        <TextView
            android:id="@+id/available_leaves_header"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_gravity="right"
            android:textColor="#000000" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" 
        android:gravity="left|right">

        <TextView
            android:id="@+id/leave_type"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_gravity="left"
            android:textColor="#000000"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/available_leaves"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_gravity="right"
            android:textColor="#000000"
            android:textStyle="bold" />
    </LinearLayout>

</LinearLayout>

【问题讨论】:

  • 不清楚...图片显示的是您想要的结果还是您拥有的结果?
  • 我建议你应该为此使用RelativeLayout
  • @DerGolem No 图片显示了我得到的输出
  • 我希望它们与中心对齐。
  • 我会在 TextViews 上使用权重,而不是。并获得更像表格的输出。

标签: android android-layout android-listview


【解决方案1】:

最好的选择是使用 weightsum:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightsum="2"
    android:orientation="horizontal" 
    android:gravity="left|center">

    <TextView
        android:id="@+id/leave_type_header"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_gravity="left"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/available_leaves_header"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_gravity="right"
        android:textColor="#000000" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" 
     android:weightsum="2"
    android:gravity="left|center">

    <TextView
        android:id="@+id/leave_type"
       android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_gravity="left"
        android:textColor="#000000"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/available_leaves"
       android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_gravity="left"
        android:textColor="#000000"
        android:textStyle="bold" />
</LinearLayout>

【讨论】:

  • 你的回答有点符合我的目的。谢谢你:)
【解决方案2】:

如何将“叶子类型”和“可用叶子”对齐到中心 列表并将它们的值对齐到各自的中心 标题?

LinearLayout'sgravity 属性设置为居中:

android:gravity="center"

【讨论】:

    【解决方案3】:

    将您的代码替换为

    <LinearLayout
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal">
    
        <TextView
            android:id="@+id/leave_type_header"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="type"
            android:textColor="#000000" />
    
        <TextView
            android:id="@+id/leave_type"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:textColor="#000000"
            android:text="casual"
            android:textStyle="bold" />
    
    
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        android:gravity="center_horizontal">
    
        <TextView
            android:id="@+id/available_leaves_header"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="available"
            android:textColor="#000000" />
    
        <TextView
            android:id="@+id/available_leaves"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:textColor="#000000"
            android:text="5.0"
            android:textStyle="bold" />
    </LinearLayout>
    

    【讨论】:

    • android:layout_width="0dp" 给我错误“可疑尺寸会使视图不可见”
    • 你也必须给权重,检查下一行,我写了 android:layout_weight="1"
    【解决方案4】:

    您可以使用android:weightandroid:gravity="center" 来获取所需的布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/bg_grey"
        android:orientation="vertical" >
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="2" >
    
        <TextView
            android:id="@+id/leave_type_header"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Leave Type"
            android:textColor="#000000" />
    
        <TextView
            android:id="@+id/available_leaves_header"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Available Leaves"
            android:textColor="#000000" />
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="left|right"
        android:orientation="horizontal"
        android:weightSum="2" >
    
        <TextView
            android:id="@+id/leave_type"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="Privilege"
            android:textColor="#000000"
            android:textStyle="bold" />
    
        <TextView
            android:id="@+id/available_leaves"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:gravity="center"
            android:text="20.0"
            android:textColor="#000000"
            android:textStyle="bold" />
    </LinearLayout>
    
    </LinearLayout>
    

    我得到了类似的列表视图项

    【讨论】:

      【解决方案5】:

      因为你使用了layout_gravity = "left"layout_gravity = "right" 所以你只需要把它们从中心分开。我建议你应该使用android:weight

      只需将其添加到您的布局标签中即可。

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_gravity="center"
          android:background="@drawable/list_selector"
          android:orientation="vertical" >
      
          <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="horizontal" >
      
              <TextView
                  android:id="@+id/leave_type_header"
                  android:layout_width="0dp"
                  android:weight = "1"
                  android:layout_height="wrap_content"
                  android:layout_margin="10dp"
                  android:layout_gravity="center"
                  android:textColor="#000000" />
      
              <TextView
                  android:id="@+id/available_leaves_header"
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:weight = "1"
                  android:layout_margin="10dp"
                  android:layout_gravity="center"
                  android:textColor="#000000" />
          </LinearLayout>
      
          <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="horizontal" 
             >
      
              <TextView
                  android:id="@+id/leave_type"
                  android:layout_width="0dp"
                  android:weight = "1"
                  android:layout_height="wrap_content"
                  android:layout_margin="10dp"
                  android:layout_gravity="center"
                  android:textColor="#000000"
                  android:textStyle="bold" />
      
              <TextView
                  android:id="@+id/available_leaves"
                  android:layout_width="0dp"
                  android:weight = "1"
                  android:layout_height="wrap_content"
                  android:layout_margin="10dp"
                  android:layout_gravity="center"
                  android:textColor="#000000"
                  android:textStyle="bold" />
          </LinearLayout>
      
      </LinearLayout>
      

      由于我为 LinearLayout 中的两个 textview 设置了 android:weight = "1",它会将可用的水平宽度分成两半,android:layout_gravity = "center" 会将它们设置为居中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-31
        • 2014-02-18
        • 2014-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-19
        相关资源
        最近更新 更多