While using TextInputLayout with app:passwordToggleEnabled="true" EditText text gravity isn't centered well as shown in the photo. Any help?
 <android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:hintEnabled="false"
    app:passwordToggleEnabled="true">
    <EditText
        android:gravity="center"
        android:id="@+id/passwordEt"
        style="@style/editTextStyle"
        android:layout_marginBottom="20dp"
        android:hint="@string/password"
        android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
and for the text style
<style name="editTextStyle">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">50dp</item>
    <item name="android:layout_margin">8dp</item>
    <item name="android:background">@drawable/text_fields</item>
    <item name="android:padding">15dp</item>
</style>

Just add transparent drawable to the left side of EditText.
<android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:passwordToggleEnabled="true">
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:drawableLeft="@drawable/ic_password_space"
                    android:drawableStart="@drawable/ic_password_space"
                    android:gravity="center" />
</android.support.design.widget.TextInputLayout>
For transparent drawable you can use whatever you want with android:width="48dp".
Create drawable resource file @drawable/ic_password_space.xml.
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="48dp"
        android:height="1dp"
        android:viewportWidth="1.0"
        android:viewportHeight="1.0">
    <path
        android:pathData="M"
        android:fillColor="#0000"/>
</vector>
                        Add empty 48dp drawable on both sides of the edit text if you hiding passwordToggle when the editText is empty, Otherwise, the cursor would not be in center initially.
<android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:passwordToggleEnabled="true">
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableStart="@drawable/ic_password_toggle_space"
                android:drawableEnd="@drawable/ic_password_toggle_space"
                android:gravity="center" />
for creating empty drawable you can add a blank vector ic_password_toggle_space.xml file in drawable resources:-
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="48dp"
    android:height="1dp"
    android:viewportWidth="1.0"
    android:viewportHeight="1.0">
    <path
        android:pathData="M"
        android:fillColor="#0000"/>
</vector>
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With