Search code examples
androidandroid-layoutandroiddesignsupportandroid-textinputlayout

TextInputLayout :How to give padding or margin to hint?


I have to use TextInputLayout of design support library in my project. I want to give space between hint and EditText in TextInputLayout. I set margin and padding in TextInputLayout and even inside EditText but both are not work.So how to solve this issue. Here i attach screen shot and my coding.

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

enter image description here


Solution

  • The solution proposed by ganesh2shiv works for the most part, although I've found it also de-centres the hint text displayed inside the EditText when not focused.

    A better trick is to set the desired paddingTop to the EditText but also embed the extra padding within the EditText's background. A fairly sane way to do this is to wrap your original background in a <layer-list> and set the <item android:top="..."> attribute to match the paddingTop of your EditText.

    <android.support.design.widget.TextInputLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
    
      <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/floating_hint_margin"
        android:background="@drawable/bg_edit_text" />
    </android.support.design.widget.TextInputLayout>
    

    And the bg_edit_text.xml drawable file:

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
      <item android:top="@dimen/floating_hint_margin">
        <your original background; can be <bitmap> or <shape> or whatever./>
      </item>
    </layer-list>