Search code examples
androidandroid-layoutxamarinandroid-design-libraryandroid-textinputlayout

TextInputLayout passwordToggle with rounded corners


I'm using TextInputLayout from android design library version 25.1.1. With the following code:

<android.support.design.widget.TextInputLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:local="http://schemas.android.com/apk/res-auto"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  local:passwordToggleEnabled="true"
  local:hintEnabled="false">
  <android.support.design.widget.TextInputEditText
    android:id="@+id/confirmationEditText"
    android:singleLine="true" />
</android.support.design.widget.TextInputLayout>

But when password toggle icon is pressed, its ripple effect is drawn above the background of TextInput: Background pressed state

How can I set rounded corners radius for passwordToggle? Can I reference its existing background and "wrap" it with needed properties (how to find Path for default drawable that is used by toggle)?


Solution

  • I tried to implement on fresh project to understand your scenario .

    Please take a look into solution.I have attached screenshot of how it will look.

    enter image description here

    You have to include drawable in drawable folder and set it into background of TextInputEditText

    round_corner_toggle.xml

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
        <item android:left="20dp">
            <shape android:shape="rectangle" >
                <size android:height="20dp" />
                <solid android:color="#d8d8d8" />
                <corners android:radius="5dp" />
            </shape>
        </item>
    
        <item android:right="60dp">
            <shape android:shape="rectangle" >
                <size android:height="20dp" />
                <solid android:color="#ecf0f1" />
                <corners android:radius="5dp" />
    
            </shape>
        </item>
    </layer-list>
    

    Content for TextInputLayout

                <android.support.design.widget.TextInputLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:counterEnabled="true"
                    app:counterMaxLength="8"
                    android:background="#FFFFFF"
                    app:passwordToggleEnabled="true"
                    app:passwordToggleTint="@color/colorPrimary">
    
                    <android.support.design.widget.TextInputEditText
                        android:id="@+id/tietPassword"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:hint="Password"
                        android:background="@drawable/round_corner_toggle"
                        android:inputType="textPassword"
                        android:padding="@dimen/activity_horizontal_margin"
                        android:maxLength="8" />
                </android.support.design.widget.TextInputLayout>
        </LinearLayout>