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

如何在android中更改TextInputLayout的浮动标签位置,android,android-edittext,androiddesignsupport,android-textinputlayout,Android,Android Edittext,Androiddesignsupport,Android Textinputlayout,我有一个矩形的编辑文本,它位于TextInputLayout中。 我想在浮动标签和编辑文本的矩形边界之间留一些边距,但我不能这样做。我尝试了不同的边距参数,但没有效果。 在图像中,您可以看到浮动标签与矩形编辑文本的上边界粘在一起。但我想在标签和上边界之间留点空间。 提前准备好 下面是EditText的XML代码 下面是可绘制背景的代码 <shape xmlns:android="http://schemas.android.com/apk/res/android" andr

我有一个矩形的编辑文本,它位于TextInputLayout中。 我想在浮动标签和编辑文本的矩形边界之间留一些边距,但我不能这样做。我尝试了不同的边距参数,但没有效果。

在图像中,您可以看到浮动标签与矩形编辑文本的上边界粘在一起。但我想在标签和上边界之间留点空间。 提前准备好

下面是EditText的XML代码


下面是可绘制背景的代码

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

/>

如果在EditText上设置了自定义背景,则android:paddingTop属性simple无法改变浮动提示文本和编辑文本之间的间距。因此,如果已将自定义背景设置为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>


希望这有帮助:)

我相信您无法自定义标签位置文本输入布局。
使用TranslationY不是更改浮动标签位置的合适解决方案,因为它将转换任何视图。如果您找到任何其他答案,请告诉我。

您可以手动为TextInputLayout指定高度,如:

android:layout_height="100dp"
这对我有用

使用带有图层列表的可绘制背景从顶部获得一些填充


用法

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

为此,您只需将背景从edttext放入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"/>


您只需在可绘制文件中指定padding top。

只需添加到您的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,如果使用固定高度(测试代码100%工作)
则使用填充值增加EditText的高度。您的TextInputLayout高度应大于EditText。然后设置重力

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


使用此链接解决您的问题。希望这对你有帮助。最好的。你可以参考这个答案:你可以参考这个链接:这个安卓系统的任何解决方案:translationY=“10dp”它将翻译编辑文本或事实上的任何视图。是的,你的解决方案根据问题工作,但它也改变了原始提示的位置(当它没有焦点时)。谢谢回复并同意你的评论不工作。此外,你的代码是实心矩形,我的问题是空心矩形。好吧,你可以通过编辑可绘制图形来选择空心。我已经更新了答案。这一定行得通。做了一些技巧,但现在edittext光标和提示看起来在不聚焦时更倾向于矩形的上边界。我认为根据手机的屏幕分辨率/大小,它将是可见的。它的工作完全符合预期。但您还需要将TextInputLayout的重力=底部设置为顶部显示的额外高度。