如何在TextInputLayout中同时显示PasswordToggle图标和背景drawable?

4
我想为我的TextInputLayout设置一个背景drawable,这是我的代码:
<android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_repass"
            android:layout_width="match_parent"
            android:layout_height="37dp"
            android:layout_marginTop="10dp"
            app:hintEnabled="false"
            android:layoutDirection="rtl"
            app:passwordToggleEnabled="true">

            <EditText
                android:id="@+id/repass"
                style="@style/edittexts"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/hint_repass"
                android:drawableRight="@drawable/ic_https_grey600_18dp"
                android:inputType="textPassword"
                android:nextFocusDown="@+id/email" />

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

问题是图标没有出现,原因是由于passwordToggleEnabled,当我删除它时,它显示可绘制对象。

如何同时显示PasswordToggle Drawablebackground drawable?

3个回答

3

使用

android:drawableStart="@drawable/ic_launcher_round"

替代

android:drawableRight="@drawable/ic_launcher_round"

试试这个

<android.support.design.widget.TextInputLayout
    android:id="@+id/input_layout_repass"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layoutDirection="rtl"
    app:hintEnabled="false"
    app:passwordToggleEnabled="true">


    <EditText
        android:id="@+id/repass"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawableStart="@drawable/ic_launcher_round"
        android:hint="nilu"
        android:imeOptions="actionNext"
        android:inputType="textPassword" />


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

注意:android:drawableStart="@drawable/ic_launcher_round" 之所以起作用,是因为 android:layoutDirection="rtl"

输出结果:

enter image description here


你能解释一下为什么当我们将drawableStart设置为右侧时,drawable会显示出来,尽管它们两者是相反的吗? android:drawableRight="@drawable/ic_launcher_round" android:drawableStart="@drawable/ic_launcher_round" - Umair
是的,我知道它正在工作,我只是想知道原因 :) 它看起来真的很奇怪。 - Umair
@Umair,我不知道原因,可能是因为app:passwordToggleEnabled - AskNilesh
@Umair因为使用了android:layoutDirection="rtl",成功让**drawableStart**起作用。 - AskNilesh
顺便提一下,只有在加入android:drawableStart="@drawable/ic_launcher_round"这行代码并删除其他代码时才能正常工作。 :) - Umair
显示剩余2条评论

0

试试这个

     <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:id="@+id/rl_main"
        android:padding="@dimen/margin_30dp"
        android:background="@color/white_color">

       <ImageView
        android:id="@+id/img_email"
        android:layout_width="@dimen/margin_25dp"
        android:layout_height="@dimen/margin_25dp"
        android:src="@drawable/message"
        android:layout_marginTop="@dimen/margin_15dp"
        android:layout_alignParentLeft="true"
/>
        <!--Email-->
        <android.support.design.widget.TextInputLayout
            android:id="@+id/til_email_login_activity"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:hint="@string/email"
            android:textColorHint="@color/gray">

            <com.xxx.app.customeview.CustomFontEditText
                android:id="@+id/et_email_login_activity"
                style="@style/edit_text_style"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:imeOptions="actionNext"
                android:inputType="textEmailAddress"
                android:text="" />
        </android.support.design.widget.TextInputLayout>
       </RelativeLayout>

要关闭密码开关,请使用 app:passwordToggleEnabled="false"


0

你只需要添加这一行代码

android:drawableStart="@drawable/ic_action_rupee"

请使用这段代码,它对我有效。
<android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_repass"
            android:layout_width="match_parent"
            android:layout_height="37dp"
            android:layout_marginTop="10dp"
            app:hintEnabled="false"
            app:passwordToggleEnabled="true">

            <EditText
                android:id="@+id/repass"
                style="@style/edittexts"
                android:drawableStart="@drawable/ic_action_rupee"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/hint_repass"
                android:inputType="textPassword"
                android:nextFocusDown="@+id/email"
                android:drawableLeft="@drawable/ic_action_rupee" />

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

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