Android EditText密码,标签gravity RTL

Android EditText password, label gravitiy RTL

我花了很多时间试图解决这个问题,但现在没有成功...

当应用程序在 android 上使用 RTL 语言运行时。 EditText 的标签(提示)显示在错误的位置。

想要的结果 ltr layout

RTL 布局 rtl layou

XML

<?xml version="1.0" encoding="utf-8"?>

<android.support.percent.PercentRelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Login form container -->
    <android.support.percent.PercentRelativeLayout
        android:id="@+id/form_container"
        android:layout_centerHorizontal="true"
        app:layout_widthPercent="85%"
        app:layout_heightPercent="30%"
        app:layout_marginTopPercent="8%">

        <!-- Username layout -->
        <android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/input_username"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxLines="1"
                android:inputType="textVisiblePassword|textNoSuggestions"
                android:textDirection="ltr"
                android:hint="@string/hint_username"/>

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

        <!-- Password layout -->
        <android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:layout_below="@+id/input_layout_username">

            <EditText
                android:id="@+id/input_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxLines="1"
                android:textDirection="anyRtl"
                android:hint="@string/hint_password"
                android:inputType="textPassword" />

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

    </android.support.percent.PercentRelativeLayout>

</android.support.percent.PercentRelativeLayout>

如何修复 RTL 布局中不必要的边距? 此外,如果可以 remove/hide "visibility toggle"(眼睛图标)按钮,那就太好了!

谢谢!

要禁用密码切换,您只需将 "passwordToggleEnabled" 属性添加到您的 TextInputLayout,例如:

<android.support.design.widget.TextInputLayout
        android:id="@+id/input_layout_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        app:passwordToggleEnabled="false">

    <EditText
        android:id="@+id/input_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:textDirection="ltr"
        android:hint="@string/hint_password"
        android:inputType="textPassword" />

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