如何从TextInputLayout删除水平填充?

时间:2019-09-01 21:19:56

标签: android material-design android-textinputlayout material-components material-components-android

在迁移到最新版本的Material Components(1.1.0-alpha09)之后,我注意到TextInputLayout具有一些填充水平填充。我的目标是实现没有背景或轮廓框的旧样式的文本字段。因此,我扩展了一种样式,即Widget.MaterialComponents.TextInputLayout.FilledBox并将背景色设置为透明。

<style name="Widget.MyApp.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.FilledBox.Dense">
    <item name="boxBackgroundColor">@color/transparent</item>
</style>

现在的问题是,在我的应用中,使用这种水平填充(对于填充或轮廓框是必需的),此输入字段看起来很奇怪。

Screenshot

所以我的问题是,如何删除该填充物?

1 个答案:

答案 0 :(得分:1)

您可以使用类似的内容:

<com.google.android.material.textfield.TextInputLayout
       ....
       android:hint="Hint text"       
       style="@style/My.TextInputLayout.FilledBox.Dense" >

然后您可以使用materialThemeOverlay属性定义(要求版本1.1.0)自定义样式:

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

  <style name="MyThemeOverlayFilledDense">
    <item name="editTextStyle">@style/MyTextInputEditText_filledBox_dense
    </item>
  </style>

  <style name="MyTextInputEditText_filledBox_dense" parent="@style/Widget.MaterialComponents.TextInputEditText.FilledBox.Dense">
    <item name="android:paddingStart" ns2:ignore="NewApi">4dp</item>
    <item name="android:paddingEnd" ns2:ignore="NewApi">4dp</item>
    <item name="android:paddingLeft">4dp</item>
    <item name="android:paddingRight">4dp</item>
  </style>

这里是结果(具有默认样式和自定义样式):

enter image description here enter image description here