【问题标题】:Align Checkbox to center of the ListView item将复选框对齐到 ListView 项的中心
【发布时间】:2017-11-20 07:31:20
【问题描述】:

以下布局在我的应用中用于显示剪辑列表。

<?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:orientation="horizontal">

    <TextView
        android:id="@+id/ClipNo"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Clip No"
        android:textSize="20sp"
        android:gravity="center"
        android:layout_weight="1"/>

    <TextView
        android:id="@+id/ClipTime"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Time"
        android:textSize="20sp"
        android:gravity="center"
        android:layout_weight="1"/>

    <TextView
        android:id="@+id/ClipDate"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Date"
        android:textSize="20sp"
        android:gravity="center"
        android:layout_weight="1"/>

    <CheckBox android:id="@+id/ClipMark"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1" />

</LinearLayout>

下图显示了布局的输出

如何将“复选框”排列到“标记”标题的中心

提前致谢

【问题讨论】:

    标签: android android-layout listview android-checkbox


    【解决方案1】:

    因为你加了android:layout_weight="1"

    更改您的以下代码

     <CheckBox 
            android:id="@+id/ClipMark"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="1" />
    

    <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_weight="1">
    
            <CheckBox 
                android:id="@+id/ClipMark"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    
    </LinearLayout>
    

    【讨论】:

    • 重要的部分是将layout_width设置为“wrap_content”,将父级的重力设置为“center”。您可以使用任何您想要的父布局。例如,它在表格行中也能很好地工作。
    【解决方案2】:

    我将CheckBox 放在LinearLayout

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
        <TextView
            android:id="@+id/ClipNo"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Clip No"
            android:textSize="20sp"
            android:gravity="center"
            android:layout_weight="1"/>
    
        <TextView
            android:id="@+id/ClipTime"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Time"
            android:textSize="20sp"
            android:gravity="center"
            android:layout_weight="1"/>
    
        <TextView
            android:id="@+id/ClipDate"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Date"
            android:textSize="20sp"
            android:gravity="center"
            android:layout_weight="1"/>
        <LinearLayout
            android:gravity="center"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content">
    
            <CheckBox android:id="@+id/ClipMark"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    
        </LinearLayout>
    </LinearLayout>
    

    【讨论】:

      【解决方案3】:

      创建一个 LinearLayout 作为 PARENT

          <LinearLayout
                  android:layout_width="0dp"
                  android:gravity="center"
                  android:layout_weight="1"
                  android:layout_height="wrap_content" >
      
              <CheckBox
                  android:id="@+id/ClipMark"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center"/>
      
         </LinearLayout>
      

      【讨论】:

        【解决方案4】:

        如果您检查设备布局边界,CheckBox 将根据您当前的布局正确对齐到中心。将CheckBox 添加到布局中(LinearLayout 示例)并实现布局。
        它应该可以工作。
        提示:参考:CheckBox official documentation

        【讨论】:

          【解决方案5】:

          试试这个在RelativeLayout 中添加你的CheckBox

          <?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:orientation="horizontal">
          
              <TextView
                  android:id="@+id/ClipNo"
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:gravity="center"
                  android:text="Clip No"
                  android:textSize="20sp" />
          
              <TextView
                  android:id="@+id/ClipTime"
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:gravity="center"
                  android:text="Time"
                  android:textSize="20sp" />
          
              <TextView
                  android:id="@+id/ClipDate"
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:gravity="center"
                  android:text="Date"
                  android:textSize="20sp" />
          
              <RelativeLayout
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="1">
          
                  <CheckBox
                      android:id="@+id/ClipMark"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:layout_centerInParent="true" />
              </RelativeLayout>
          
          </LinearLayout>
          

          【讨论】:

            【解决方案6】:

            试试这个对我有用的

              <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1">
                    <CheckBox
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/interested_item_checkbox"
                        android:layout_centerInParent="true"
                        style="@style/interested_item_textview"
                        />
                </RelativeLayout>
            

            【讨论】:

              【解决方案7】:

              我只是在我的复选框中放了一个负边距值

              <style name="details_checkbox">
                  <item name="android:scaleX">0.80</item>
                  <item name="android:scaleY">0.80</item>
                  <item name="android:layout_width">wrap_content</item>
                  <item name="android:layout_height">wrap_content</item>
                  <item name="android:layout_alignParentEnd">true</item>
                  <item name="android:layout_marginTop">-4dp</item>
              </style>
              

              【讨论】:

              • 欢迎来到 SO!当你重播一个问题时,请描述它,即使它是正确的。就您而言,还有更多答案,因此请展示您的优点和缺点。
              【解决方案8】:

              替换复选框xml代码

              <RelativeLayout
                  android:layout_width="0dp"
                  android:layout_weight="1"
                  android:layout_height="wrap_content">
              
              <CheckBox
                  android:id="@+id/ClipMark"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_centerInParent="true" />
              </RelativeLayout>
              

              【讨论】:

                【解决方案9】:

                上述解决方案仅适用于等宽(重量=1)。当您有不同的权重时,需要添加一个边距值以使复选框正确居中。

                例如,在复选框中添加一个正的 Margin-Value

                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="0.2"
                        android:gravity="center">
                
                        <CheckBox
                            android:id="@+id/secondary_axis"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginStart="20dp" />
                
                    </LinearLayout>
                

                【讨论】:

                  猜你喜欢
                  • 2015-10-02
                  • 2021-02-25
                  • 2014-11-11
                  • 1970-01-01
                  • 2019-08-06
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多