如何在TextInputLayout上禁用填充?

daz*_*000 22 android android-layout material-design android-textinputlayout

如下面的屏幕截图所示,使用a TextInputLayout换行时似乎会自动添加左边距EditText.

在此输入图像描述

EditText在布局XML中没有添加填充,但是当渲染视图时,似乎在左边有填充EditText.比较TextView下面的时候你可以看到这个TextInputLayout.

如何禁用此左侧填充?

谢谢!

And*_*tor 32

您可以将内部 EditText 上的开始和结束填充设置为 0dp。

<com.google.android.material.textfield.TextInputLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content">

  <com.google.android.material.textfield.TextInputEditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingStart="0dp"
    android:paddingEnd="0dp" />

</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

这是显示布局边界打开的屏幕截图,因此您可以看到提示一直到视图的边缘。

编辑文本无填充

  • 请随意更改已接受的答案;)负边距似乎有点老套 (4认同)

kri*_*son 14

TextInputLayout是a LinearLayout,所以你应该能够指定负边距或填充,例如

            android:layout_marginLeft="-2dp"
            android:layout_marginStart="-2dp"
Run Code Online (Sandbox Code Playgroud)

这将抵消你想要消除的空间.

-2dp值只是一个猜测; 调整值,直到它按照您想要的方式排列.

  • 我很感激回应,但我仍然希望有一个更清洁的解决方案.谢谢. (7认同)
  • 所以你会使用`-4dp`.并非所有开发人员都知道您可以使用负值来设置边距. (4认同)

Gab*_*tti 9

通过TextInputLayout包含在材料组件库中,您可以使用自定义样式来减少填充。

只需使用类似的东西:

<com.google.android.material.textfield.TextInputLayout
       ....
       android:hint="Hint text"       
       style="@style/My.TextInputLayout.FilledBox.Padding" >
Run Code Online (Sandbox Code Playgroud)

然后您可以为EditTextusingmaterialThemeOverlay属性定义自定义样式:

  <style name="My.TextInputLayout.FilledBox.Padding" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="materialThemeOverlay">@style/MyThemeOverlayFilledPadding</item>
  </style>

  <style name="MyThemeOverlayFilledPadding">
    <item name="editTextStyle">@style/MyTextInputEditText_filledBox_padding</item>
  </style>

  <style name="MyTextInputEditText_filledBox_padding" parent="@style/Widget.MaterialComponents.TextInputEditText.FilledBox">
    <!-- left and right padding -->
    <item name="android:paddingStart" ns2:ignore="NewApi">2dp</item>
    <item name="android:paddingEnd" ns2:ignore="NewApi">2dp</item>
    <item name="android:paddingLeft">2dp</item>
    <item name="android:paddingRight">2dp</item>
    
    <!-- top and bottom padding -->
    <item name="android:paddingTop">28dp</item>
    <item name="android:paddingBottom">12dp</item>
  </style>
Run Code Online (Sandbox Code Playgroud)

这里的最终结果:

在此处输入图片说明在此处输入图片说明

注意:它至少需要材质组件库的 1.1.0 版本。

  • @nibbana,对于这样一个简单而琐碎的任务的理智答案,真的吗?Android UI 设计师正在用他们的 *sses 进行思考。我有一个“TextView”和“EditText”,我已经尝试调整它们的开始大约一个小时了,我什至不是 Android 新手。这只不过是废话 (4认同)