TextInputLayout:如何为提示添加填充或边距?

72

在我的项目中,我必须使用设计支持库的TextInputLayout。我想在TextInputLayout中的hintEditText之间留出空间。我设置了TextInputLayoutEditText内部的边距和填充,但都不起作用。如何解决这个问题?我附上截图和我的代码。

==============================Style=================================

<style name="TextHint" parent="Base.TextAppearance.AppCompat">
    <item name="android:textSize">18sp</item>
    <item name="android:textColor">@color/green</item>
</style>



=============================XML===================================  
<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    app:hintTextAppearance="@style/TextHint"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_height="wrap_content">
<EditText
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:id="@+id/edttxtEmailAddress"
    android:singleLine="true"
    android:hint="@string/enter_valid_email"
    android:paddingLeft="20dp"
    android:textSize="20sp"
    android:background="@drawable/rounded_common"/>
</android.support.design.widget.TextInputLayout>

在此输入图片描述


1
你为什么把EditText放在android.support.design.widget.TextInputLayout中? - Coas Mckey
我猜他想显示一个提示。但是... hint xml标签不起作用吗? - Mauker
因为我想为那个EditText使用浮动提示。 - Pranav
@Mauker,如您所见,没有提示标签可以像图像提示一样工作,但它会重叠EditText边框...那么有没有办法在提示和EditText之间提供垂直距离? - Pranav
@parnav,请阅读我的更新答案,其中包含如何显示错误信息,这在出现不正确的情况下可能也会有用。 - Coas Mckey
22个回答

-1

我认为你应该考虑这个:

设计库采用了一种有趣的方法来自定义EditText:它不直接更改它。相反,TextInputLayout用于包装EditText并提供增强功能。

第一个增强功能是在用户输入字段时显示浮动标签,这是自动完成的。 TextInputLayout在其子项中找到EditText并将其附加为TextWatcher,因此它能够确定字段何时已被修改,并将提示从EditText的常规位置移动到其上方的浮动标签位置。

第二个增强功能是显示错误消息,需要稍微更改代码。不要在EditText上设置错误,而应在TextInputLayout上设置错误。这是因为没有自动通知TextInputLayout当错误设置在EditText上时。

以下是布局的样式:

<android.support.design.widget.TextInputLayout
    android:id="@+id/username_text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <EditText
        android:id="@+id/username_edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/username_hint"/>
</android.support.design.widget.TextInputLayout>

请注意,EditTextTextInputLayout都需要布局ID。在片段中,我们需要配置TextInputLayout以启用显示错误:
TextInputLayout usernameTextInputLayout = (TextInputLayout) view.findViewById(R.id.username_text_input_layout);
usernameTextInputLayout.setErrorEnabled(true);
...
usernameTextInputLayout.setError(R.string.username_required);

不,那不是我想要的。我使用背景来编辑文本,它可以扩展EditText边框超出其默认限制,以便提示重叠EditText。 是否有任何方法或XML标记可以在提示和EditText上边框之间创建边距? - Pranav
android:paddingTop="20dp" 或者适合您的任何内容 - Coas Mckey
1
不起作用的android:paddingTop="20dp"也因为它在EditText内部创建了空间,我想在提示和EditText之间创建空间... - Pranav
设置paddingTop对我有效,我刚刚测试过。 - Coas Mckey
如果我们可以减少距离,那么我们也可以增加填充。我尝试给出填充顶部,对我来说确实有效,我认为问题在于你的背景。请查看此链接:https://dev59.com/aV0Z5IYBdhLWcg3w4zom - Coas Mckey
显示剩余8条评论

-1

我认为使用固定大小比你想象的要简单,只要你没有任何理由使用wrap_content,否则接受的方法似乎可以正常工作。

        <com.google.android.material.textfield.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:gravity="bottom">

            <EditText
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_marginTop="10dp"/>

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

按照这个例子,您有20dp的空间来放置您想要的提示标签,可以通过调整layout_marginTop属性进行布局。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接