如何将切换密码按钮移动到左侧?

时间:2017-12-14 07:41:23

标签: android android-edittext android-input-method

我在我的表单中使用切换密码,这是我的代码:

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

       <android.support.design.widget.TextInputEditText
            android:id="@+id/password"
            style="@style/edittexts"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/hint_pass"
            android:inputType="textPassword"
            app:passwordToggleEnabled="true" />
</android.support.design.widget.TextInputLayout>

它工作正常,并在我的EditText中显示切换按钮视图。

我只想将图标移到编辑文本的左侧,我该怎么办?

2 个答案:

答案 0 :(得分:3)

您需要更改编辑文字的方向,但它会改变编辑文字的方向,它将从右向左开始编辑。

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

   <android.support.design.widget.TextInputEditText
        android:id="@+id/password"
        style="@style/edittexts"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hint_pass"
        android:inputType="textPassword"
        app:passwordToggleEnabled="true" />
</android.support.design.widget.TextInputLayout>

如果您使用的是低于17的api版本,则需要在代码中添加此属性

TextInputLayout input_layout_pass = (TextInputLayout) findViewById(R.id.input_layout_pass); 
ViewCompat.setLayoutDirection(input_layout_pass, ViewCompat.LAYOUT_DIRECTION_RTL);

答案 1 :(得分:2)

查看TextInputLayout的文档:

  

注意:使用密码切换功能时,将在启用切换时覆盖EditText的'end'复合drawable。为了确保正确恢复任何现有的drawable,你应该相对地设置那些复合drawable(开始/结束),而绝对(左/右)则相反。

基于此,您会发现在不更改该字段中的文字方向的情况下无法更改按钮的位置。