删除 TextInputLayout 额外的顶部填充

问题描述 投票:0回答:10

TextInputLayout 似乎总是在顶部有一些额外的填充(无论所有边距/填充都设置为 0):

布局如下:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.AppCompatEditText
            android:id="@+id/txt_amount"
            style="@style/EditTextStyle"
            android:hint="@string/hint_amount"
            android:inputType="numberDecimal"/>
    </android.support.design.widget.TextInputLayout>

如何删除这个多余的空间?

android padding android-textinputlayout
10个回答
72
投票

您可以通过将

app:hintEnabled="false"
设置为 TextInputLayout 来删除 AppCompatEditText 上方的额外空间,但在您重新启用之前它不会显示提示。

有关更多信息,请访问 Android 开发者网站 -TextInputLayout

查看以下代码

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:hintEnabled="false">

    <android.support.v7.widget.AppCompatEditText
        android:id="@+id/txt_amount"
        style="@style/EditTextStyle"
        android:hint="@string/hint_amount"
        android:inputType="numberDecimal"/>
</android.support.design.widget.TextInputLayout>

希望这有帮助..

@拉杰什


16
投票

接受的答案在版本上对我不起作用 -

1.2.1
所以我做了一些实验并意识到填充实际上并不是来自
TextInputLayout
,而是来自
TextInputEditText
。所以首先我从中删除了填充,但它看起来不均匀,所以我将自定义填充设置为
TextInputEditText
并且效果很好。只需将此行
android:padding="16dp"
添加到
TextInputEditText
将 16dp 替换为您想要的值即可。


15
投票

具有这样的结构:

<com.google.android.material.textfield.TextInputLayout
                    android:id="@+id/til_project"
                    style="@style/LoginTextInputLayoutStyle"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_gravity="center"
                    app:errorEnabled="false">

                    <com.google.android.material.textfield.TextInputEditText
                        android:id="@+id/totalPiecesProduct"
                        android:layout_gravity="center"
                        android:gravity="center"
                        android:padding="0dp"
                        android:textSize="13sp"
                        style="@style/TextInputEditTextStyle"/>

                </com.google.android.material.textfield.TextInputLayout>

按键是:

app:errorEnabled="false"
TextInputLayout

`android:padding="0dp"` in `TextInputEditText`

之前:

之后


2
投票

要删除 TextInputLayout 中的所有填充,您可以在 TextInputLayout 中将

app:boxCollapsedPaddingTop
设置为 0dp,在 Edittext 中将
android:padding
设置为 0dp。


1
投票

您可以通过覆盖TextInputStyle的默认填充样式来实现,(Material版本应高于1.1.0)

 <style name="CustomInputLayoutPadding" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="boxBackgroundColor">@color/transparent</item>
    <item name="materialThemeOverlay">@style/CustomOverlayFilledPadding</item>
</style>

然后

 <style name="CustomeOverlayFilledPadding">
    <item name="editTextStyle">@style/CustomTextInputEditPaddingStyle</item>
</style>

然后

   <style name="CustomTextInputEditPaddingStyle" parent="@style/Widget.MaterialComponents.TextInputEditText.FilledBox">
    <item name="android:paddingStart" ns2:ignore="NewApi">2dp</item>
    <item name="android:paddingEnd" ns2:ignore="NewApi">2dp</item>
    <item name="android:paddingLeft">0dp</item>
    <item name="android:paddingRight">2dp</item>
    <item name="android:paddingTop">28dp</item>
    <item name="android:paddingBottom">12dp</item>
</style>

1
投票

我已经在 TextInputEditText 中使用设置手动填充

android:paddingHorizontal="@dimen/_12sdp"
android:paddingVertical="@dimen/_10sdp"

0
投票

compileSdk 33
或材质库版本 v1.8.0 开始,我添加了属性

app:boxBackgroundMode="filled"

<com.google.android.material.textfield.TextInputLayout


0
投票

hintEnabled = false
添加到布局 XML 中的 TextInputLayout。


-1
投票

你可以用这个

  <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@android:color/white">

            <com.bugle.customviews.RobotoLightEditText

                android:id="@+id/edtName"
                style="@style/StyledTilEditText"
                android:hint="@string/name"
                android:imeOptions="actionNext"
                android:inputType="textCapWords" />

        </android.support.design.widget.TextInputLayout>

-4
投票

在 EditText 中添加这一行

android:translationY="-10dp"

© www.soinside.com 2019 - 2024. All rights reserved.