将复选框与 ListView 项目的中心对齐
Align Checkbox to center of the ListView item
我的应用中使用了以下布局来显示剪辑列表。
<?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>
下图显示了布局的输出
如何将 'CheckBox' 排列到 'Mark' Header
的中心
提前致谢
因为你添加了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>
我把 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>
创建一个 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>
替换复选框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>
如果您检查设备布局边界,CheckBox
根据您当前的布局正确对齐到中心。将 CheckBox
添加到布局(LinearLayout
示例)并实现布局。
它应该可以工作。
提示:参考: CheckBox official documentation
尝试将您的 CheckBox
添加到 RelativeLayout
<?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>
试试这个对我有用的方法
<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>
我只是在我的复选框中输入了一个负的保证金值
<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>
以上解决方案有效,仅适用于等宽(权重=1)。当您有不同的权重时,需要添加边距值以使复选框正确居中。
例如,为复选框添加一个正的保证金值
<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>
我的应用中使用了以下布局来显示剪辑列表。
<?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>
下图显示了布局的输出
如何将 'CheckBox' 排列到 'Mark' Header
的中心提前致谢
因为你添加了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>
我把 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>
创建一个 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>
替换复选框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>
如果您检查设备布局边界,CheckBox
根据您当前的布局正确对齐到中心。将 CheckBox
添加到布局(LinearLayout
示例)并实现布局。
它应该可以工作。
提示:参考: CheckBox official documentation
尝试将您的 CheckBox
添加到 RelativeLayout
<?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>
试试这个对我有用的方法
<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>
我只是在我的复选框中输入了一个负的保证金值
<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>
以上解决方案有效,仅适用于等宽(权重=1)。当您有不同的权重时,需要添加边距值以使复选框正确居中。
例如,为复选框添加一个正的保证金值
<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>