删除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> 

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

  • 如何在android中设置线性布局的页眉和页脚
  • 有没有办法将视图放在其父布局之外?
  • 更改android中的checkbox背景颜色
  • 我们是否有任何工具将Android xml布局转换为.java文件?
  • 左上角的ConstraintLayout视图
  • 如何使我的Android SwipeableCardViews更像IOS 7邮件应用程序(滑动以显示按钮)
  • 自定义视图中的Android findViewById()
  • Android Studio布局预览Listview + Gridview
  • 一种解决方法是在边上使用负边距(-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"/>