android 正在删除TextInputLayout额外的顶部填充

wnvonmuf  于 2023-03-16  发布在  Android
关注(0)|答案(9)|浏览(270)

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>

如何去除这些多余的空间?

ndasle7k

ndasle7k1#

您可以通过将app:hintEnabled="false"设置为TextInputLayout来删除AppCompatEditText上方的额外空间,但在您重新启用之前,它不会显示提示。
有关详细信息,后藤Android Developer site -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>

希望这对你有帮助。
@拉杰

0mkxixxg

0mkxixxg2#

这个公认的答案在1.2.1版本上不起作用,所以我做了一些实验,发现填充实际上并不是来自TextInputLayout,而是来自TextInputEditText。所以我首先删除了填充,但它看起来不均匀,所以我将自定义填充设置为TextInputEditText,效果很好。只需将这行android:padding="16dp"添加到TextInputEditText中,将16dp替换为您想要的值。

ni65a41a

ni65a41a3#

具有这样的结构:

<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`

之前:

yk9xbfzb

yk9xbfzb4#

您可以通过覆盖默认的填充样式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>
2vuwiymt

2vuwiymt5#

要删除文本输入布局中的所有填充,可以在文本输入布局中将app:boxCollapsedPaddingTop设置为0dp,在编辑文本中将android:padding设置为0dp。

fv2wmkja

fv2wmkja6#

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

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

ix0qys7i7#

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

app:boxBackgroundMode="filled"

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

n3ipq98p

n3ipq98p8#

你可以用这个

<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>
juud5qan

juud5qan9#

在EditText中添加此行

安卓系统:翻译Y ="-10dp”

相关问题