我正在使用EditText
,它总是在我的文字中向左右两侧添加一些填充。
添加android:includeFontPadding="false"
没有帮助,使用否定android:layout_marginLeft
或android:layout_marginRight
只会使EditText
"展开"。
如何从默认添加的EditText
中删除所有填充?
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="20dp"
android:fontFamily="roboto-regular"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_marginLeft="-5dp"
android:layout_marginRight="-5dp"
android:includeFontPadding="false"
android:textSize="@dimen/size"
android:textColor="@color/color"
android:inputType="textCapWords"
android:hint="@string/hint"
android:editable="false"
/>
答案 0 :(得分:31)
要删除EditText
左侧和右侧的填充,您可以使用以下内容:
<EditText
...
android:paddingLeft="0dp"
android:paddingRight="0dp"
... />
答案 1 :(得分:4)
如果您还想删除下划线填充添加负边距:
<EditText
...
android:layout_marginLeft="-4dp"
android:layout_marginRight="-4dp"
... />
答案 2 :(得分:0)
确实 EditText 有它自己的可绘制填充,即使在 xml 中将所有填充/边距设置为零后仍然保留。 要从 EditText 中完全删除填充,您必须将其从实际上是 InsetDrawable 的 drawable 中删除。
您可以将 drawable 转换为 {}
,通过 InsetDrawable
方法获取原始 drawable。原始可绘制对象根本没有额外的间距,您可以通过 getDrawable()
将其设置为新背景到您的 setBackground()
小部件。
EditText
但您更希望它保存顶部和底部的插图,否则 val etRemovedSpacingAllSides = findViewById<EditText>(R.id.etRemovedSpacingAllSides)
if (etRemovedSpacingAllSides.background is InsetDrawable) {
val insetDrawable = etRemovedSpacingAllSides.background as InsetDrawable
val originalDrawable = insetDrawable.drawable!!
etRemovedSpacingAllSides.background = originalDrawable
}
看起来很难看。
要保留水平间距,您必须从插入的可绘制填充尺寸中减去原始填充尺寸。我假设 padding 是通过将原始 drawable padding 和 inset drawable insets 相加来计算的。因此,要仅检索插图,您必须执行减法。
以下是完整示例(对应于图片上的“仅水平删除间距”EditText
):
EditText