如何删除 Android Checkbox 的内部图像填充(顶部、左侧和底部)
Posted
技术标签:
【中文标题】如何删除 Android Checkbox 的内部图像填充(顶部、左侧和底部)【英文标题】:How to remove internal Image padding (Top, Left and Bottom) of an Android Checkbox 【发布时间】:2014-09-17 00:21:49 【问题描述】:我在 android 中有一个 Checkbox,上面有一个 TextView:
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:padding="@dimen/default_margin">
<TextView
android:id="@+id/tv_edit_checkbox"
android:layout_
android:layout_
android:singleLine="false"
android:layout_margin="0dp"
android:gravity="center_vertical|center_horizontal"
android:text="@string/edit_checkbox" />
<CheckBox
android:id="@+id/cb_edit"
android:layout_
android:layout_
android:layout_gravity="center"
android:checked="true" />
</LinearLayout>
但是,Checkbox 的问题在于它的内部“图像”周围有一个不可见的边框。如何删除这个?我试过android:padding="-5dp"
,但由于某种原因,这只适用于复选框的右侧,而不是顶部、左侧和底部(我主要关心的是顶部)。
这里是 Eclipse Graphical Layout 窗口中 Checkbox 的截图:
LineairLayout 已选中:复选框已选中:
在第二张图片中,您可以看到选中复选框时,它周围有一些填充。我想把它去掉(特别是在顶部),这样 Text 和 Checkbox 之间的空间就会减少。
这是我有 padding="-5dp" 时的图片:
复选框已选中:
PS:如果有人知道只有一个复选框并且它是文本字段的解决方案,那么我可以删除 LineairLayout 和 TextView,同时仍然在复选框上方保留文本,我也将不胜感激。具有自定义样式和 Text 的单个 Checkbox 比具有附加 TextView 的 LineairLayout 中的 Checkbox 更好。 (我知道这更多的是针对不同的问题,但我只是在此处添加它,因为它没有太多优先级。一切都在工作,除了复选框的填充。)
【问题讨论】:
无需更改布局。您也可以在 LinearLayout 中获得此视图。请参阅我对您的答案的编辑 @Manishika 是的,LineairLayout 权重。感谢您的编辑。如果有人遇到同样的问题,他们可以选择其中一种解决方案。 【参考方案1】:好的,我将 LineairLayout 更改为 RelativeLayout,然后我可以将边距更改为负 dp。这是我的最终结果:
<RelativeLayout
android:layout_
android:layout_
android:padding="@dimen/default_margin">
<TextView
android:id="@+id/tv_edit_checkbox"
android:layout_
android:layout_
android:layout_alignParentTop="true"
android:singleLine="false"
android:gravity="center_horizontal"
android:text="@string/edit_checkbox" />
<CheckBox
android:id="@+id/cb_edit"
android:layout_
android:layout_
android:layout_below="@id/tv_edit_checkbox"
android:layout_centerHorizontal="true"
android:layout_marginTop="-10dp"
android:checked="true" />
</RelativeLayout>
这给出了以下结果:
已选择相对布局:
这确实改变了文本和复选框之间的空间。对我来说,这就是我想要的,但是它仍然不能解释为什么 Android Checkbox 的内部图像在其顶部、左侧和底部都有一个填充。现在知道 Android 的谁有这个想法,但它是一个非常糟糕的一.. 最好在内部图像上不使用填充,然后有一些默认的内部边距/填充,用户可以更改..
或
编辑:
您也可以使用LinearLayout
获得相同的结果:
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical" >
<TextView
android:layout_
android:layout_
android:gravity="center_horizontal"
android:padding="0dp"
android:text="For all products"
android:textSize="10sp" />
<CheckBox
android:id="@+id/checkBox_id"
android:layout_
android:layout_
android:layout_marginTop="-10dp"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:padding="0dp" />
</LinearLayout>
【讨论】:
以上是关于如何删除 Android Checkbox 的内部图像填充(顶部、左侧和底部)的主要内容,如果未能解决你的问题,请参考以下文章
android中如何获得listview中的checkbox的值?
Android CheckBox修改选中状态框内部颜色及样式
Android如何在CheckBox检查事件后更新RecyclerView内TextView的文本样式