删除Android EditText上的左侧填充

默认的EditText背景似乎在左边放了〜4dp的填充。 这会导致与其他小部件不一致。

我做了一个简单的应用程序来演示。 截图:

在EditText上留下填充

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:background="#00ff00" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="HINT" android:text="TEXT" android:singleLine="true"/> <TextView android:background="#00ff00" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> 

有没有办法阻止它这样做?

Solutions Collecting From Web of "删除Android EditText上的左侧填充"

一种解决方法是在边上使用负边距(-4dp)

这只有在EditText背景与Layout背景相匹配时才有效,而且在Layout中不包含EditText所覆盖的任何内容

你有没有尝试添加android:background =“@ android:color / transparent”?

我用这个结果做了同样的例子

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:background="#00ff00" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="HINT" android:text="TEXT" android:background="@android:color/transparent" android:singleLine="true"/> <TextView android:background="#00ff00" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> 

在这里输入图像说明

第二种方式与线

像这样添加一个可绘制的xml文件

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@android:color/transparent" /> <!--background color of box--> </shape> </item> <item android:top="-2dp" android:right="-2dp" android:left="-2dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="#000000" /> <!-- color of stroke --> </shape> </item> </layer-list> 

然后在你的布局中添加这个在你的EditText android:background =“@ drawable / edittext_background”

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:background="#00ff00" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="HINT" android:text="TEXT" android:background="@drawable/edittext_background" android:singleLine="true" android:layout_marginBottom="3dp"/> <TextView android:background="#00ff00" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> 

你会有这个 在这里输入图像说明

将EditText的背景更改为自定义,它有九个补丁填充

如果您只想alignment文本而不是下面的行,则可以通过编程方式覆盖填充。

所以我们假设这个布局是针对一个活动的。 一旦创build活动,您可以执行如下操作:

 findViewById(R.id.edit_text).setPaddding( 0, old_top_paddding, old_right_paddding, old_bottom_padding); 

关键是在应用背景后重新设置填充。 您可能需要注意背景被重新设置的情况,所以也许有一个想法是重写setBackground*()方法并在其中重新设置填充。

在编辑文本字段中使用android:layout_marginLeft="-4dp" ,如下所示。

 <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="HINT" android:text="TEXT" android:layout_marginLeft="-4dp" android:singleLine="true"/>