我想为自定义适配器创建布局。它应该与checkbox,icon和textView一致。
我对行使用下一个布局xml配置:
<LinearLayout
android:id="@+id/list_item_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/checkboxFileSelect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:button="@drawable/checkbox_icon"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:checked="false"
android:visibility="visible"/>
<ImageView
android:id="@+id/folder_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/folder_icon"
android:layout_gravity="center_vertical"/>
<TextView
android:id="@+id/current_folder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textColor="@color/primaryText"/>
</LinearLayout>
但左边和顶部填充不起作用。当我添加左右填充时,它只增加右填充值。
示例图片
答案 0 :(得分:2)
您必须将android:layout_marginLeft
用于此用例。
填充是组件内部的空间。例如:文本和TextView边框之间的空格。
保证金是组件外部的空间。例如:屏幕左边缘和组件边框之间的空间
答案 1 :(得分:0)
聚会晚了一点,但这是任何寻求解决方法的人的解决方案。由于无法在不增加边距的情况下移动复选框本身,因此可以覆盖该类:
class PaddedCheckBox @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyle: Int = android.R.attr.checkboxStyle,
) : MaterialCheckBox(context, attrs, defStyle) {
override fun onDraw(canvas: Canvas) {
val rtlCoefficient = if (ViewCompat.getLayoutDirection(this) == ViewCompat.LAYOUT_DIRECTION_RTL) -1 else 1
canvas.save()
canvas.translate(rtlCoefficient * 40f, 0f)
super.onDraw(canvas)
canvas.restore()
}
}
如果您不使用材料组件,则可以从AppComptCheckBox
本身扩展视图。
注意:请考虑在复选框中添加过多的填充结尾以补偿画布平移。