如何在安卓中更改TextInputLayout的浮动标签位置

18

我有一个矩形的EditText,它在TextInputLayout中。我想在浮动标签和矩形边界之间添加一些空白,但我无法做到。我尝试了不同的margin参数,但没有成功。

这里是Edit text的屏幕截图

在图片中,您可以看到浮动标签与矩形编辑文本的上边界紧贴在一起。但我想要标签和上边界之间有一些空间。谢谢提前。

以下是EditText的XML代码

 <android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

           >

            <EditText
                android:id="@+id/input_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="email"

                android:background="@drawable/textbg"/>

以下是背景可绘制代码

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">
    <stroke android:width="1dp"
        android:color="@color/colorPrimary"/>
    />

    <padding
        android:left="15dp"
        android:right="15dp"
        android:top="15dp"
        android:bottom="15dp" />
</shape>

使用此链接解决您的问题。 http://www.androidhive.info/2015/09/android-material-design-floating-labels-for-edittext/希望这能帮到您。祝一切顺利。 - Sanwal Singh
您可以参考以下答案: https://dev59.com/11wY5IYBdhLWcg3wcXeE - Chandler
您可以参考此链接:https://dev59.com/11wY5IYBdhLWcg3wcXeE - Chandler
有没有解决方案 https://stackoverflow.com/questions/65367815/floating-label-needs-to-show-inside-the-textinput-layout-in-android-studio? - sejn
7个回答

4
您可以手动为TextInputLayout指定高度,例如:
android:layout_height="100dp"

这对我来说很有效。


1
它的运行效果完全符合预期。但是你还需要为TextInputLayout设置gravity=bottom,以便在顶部出现额外的高度。 - Serhiy

3

我认为您无法自定义TextInputLayout的标签位置。

使用TranslationY不是更改浮动标签位置的合适解决方案,因为它会翻译任何视图。如果您找到其他答案,请告诉我。


感谢回复,我同意您的评论。 - Baqir

2
使用具有层列表的可绘制背景,以从顶部获得一些填充。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="10dp">
        <shape android:shape="rectangle">
            <!-- view background color -->
            <solid android:color="@android:color/transparent"></solid>

            <stroke
                android:width="1dp"
                android:color="@color/colorAccent" />

            <!-- If you want to add some padding -->
            <padding
                android:bottom="10dp"
                android:left="10dp"
                android:right="10dp"
                android:top="10dp"></padding>
        </shape>
    </item>
</layer-list>

使用

<android.support.design.widget.TextInputLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:hint="@string/label_quantity"
  android:textColorHint="@color/colorOrange"
  app:errorEnabled="true"
  app:errorTextAppearance="@style/ErrorText">

  <android.support.design.widget.TextInputEditText
    android:layout_width="match_parent"
    android:layout_height="@dimen/login_edit_text_height"
    android:background="@drawable/drawable_background"
    android:imeOptions="actionNext"
    android:inputType="number"
    android:maxLines="1"/> 

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

不起作用。此外,您的代码是针对实心矩形形状的,而我的问题是关于空心矩形的。 - Baqir
好的,你可以通过编辑可绘制对象来选择空心。我已经更新了答案。它应该可以工作。 - Anoop M Maddasseri
<item android:top="10dp"> 做了一些小技巧,但现在EditText的光标和提示看起来更朝向矩形的顶部边界,当没有聚焦时。我认为根据手机屏幕分辨率/大小它会更明显。 - Baqir

2

(测试代码百分之百有效) 你的TextInputLayout高度应该大于EditText。然后设置GRAVITY。

 <android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="65dp"
                android:gravity="bottom">

                   <EditText
                    android:id="@+id/etName"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"/>

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

0
如果您在EditText上设置了自定义背景,则android:paddingTop属性无法简单地改变浮动提示文本和编辑文本之间的间距。因此,如果您已将自定义背景设置为EditText,则可以在EditText中使用android:translationY属性。
 <android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/input_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="email"
                android:translationY="10dp" 
                android:background="@drawable/textbg"/>

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

希望这能有所帮助 :)

android:translationY="10dp"会将编辑文本或任何视图进行平移。 - Baqir
1
是的,您的解决方案按照问题要求工作,但它也改变了原始提示的位置(当它没有聚焦时)。 - Baqir

0
为此,您只需按照以下步骤将背景放入EditText的TextInputLayout中。
<android.support.design.widget.TextInputLayout
        android:id="@+id/input_layout_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/textbg"
       >

        <EditText
            android:id="@+id/input_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="email"/>

而且你只需要在可绘制文件中指定上边距。


0

只需为您的EditText添加自定义背景即可

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
        <shape android:shape="rectangle">
            <padding
                android:top="4dp"/> // your padding value
        </shape>
    </item>
// customize your background items if you need
</layer-list>





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

    <android.support.design.widget.TextInputEditText
        ...
        android:background="@style/your_custom_background"/>

然后将其应用于您的EditText,并根据您的填充值增加EditText的高度,如果您使用固定高度。


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