Android 中的 RTL EditText 指针损坏问题

RTL EditText broken pointer issue in Android

在 rtl 布局中,edittext pointer 在 android 设备中损坏。

我有一个支持英语和阿拉伯语的应用程序。因为具有输入类型编号的编辑文本字段主要存在此问题。在编辑文本字段中输入数字时,指针将分成两半,如图所示。

这是编辑文本的 xml 代码。

    <EditText
            android:id="@+id/et_budget"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:background="@drawable/white_background_theme_border"
            android:ems="10"
            android:gravity="center"
            android:hint="@string/choose_budget"
            android:inputType="number"
            android:padding="15dp"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColorHint="@android:color/black" />

有人遇到过这个问题吗?是否有相同的修复方法。 提前致谢。

只需添加这一行

 android:layoutDirection="ltr"

你试过这个吗

布局

<EditText>
    ... 
    android:gravity="right"
    android:textDirection="rtl"
</EdiText>

AndroidManifest.xml

<application
    ...
    android:supportsRtl="true">
    ...
</application>

而不是使用 android:inputType="number" ,设置 android:inputType="phone" 在我的情况下有效。因为我只想在我的编辑文本中输入数字。

以下是我来自 xml 的 EditText:

<EditText
        android:layout_gravity="start"
        android:textAlignment="viewStart"
        android:textDirection="rtl"
        android:gravity="center_vertical"
        android:layout_width="match_parent"
        android:hint="abc"
        android:inputType="phone"
        android:id="@+id/myNumber"
        android:paddingStart="8dp"
        android:paddingLeft="8dp"
        android:background="@android:color/transparent"
        android:textColorHint="#767676"
        android:backgroundTint="@android:color/transparent"
        android:layout_height="fill_parent"
        tools:ignore="RtlCompat" />
android:textDirection="ltr" left to right
android:textDirection="rtl" right to left

它使文本方向指向所选的一侧。如果您的输入值是拉丁字符,我强烈建议您使用 ltr(阿拉伯语)。但标签按其性质定位(如阿拉伯语右,英语左)