如果实现RTL,则在左侧显示android Material Edittext错误

问题描述 投票:3回答:2

我正在开发支持多语言(英语和阿拉伯语)的应用程序。

如果使用阿拉伯语的应用语言,则会在左侧显示EditText错误。我尝试了所有的技巧

gravity=start 
textAlignment=viewStart
layoutDirection=anyRtl 

等但不工作。请帮我 :(

这是我面临的问题的屏幕截图。

enter image description here

这是代码

<appname.util.customview.MaterialEditText
        android:id="@+id/met_email_phone"
        style="@style/material_edit_text"
        android:layout_marginEnd="@dimen/margin_large_30"
        android:layout_marginStart="@dimen/margin_large_30"
        android:layout_marginTop="@dimen/margin_xlarge"
        android:backgroundTint="@color/colorAccent"
        android:hint="@string/email_phone"
        android:inputType="textEmailAddress"
        app:met_primaryColor="@color/met_underline" />

而edittext的风格是

<style name="material_edit_text">
    <item name="android:gravity">start</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:maxLines">1</item>
    <item name="android:maxLength">30</item>
    <item name="android:textDirection">anyRtl</item>
    <item name="android:textAlignment">viewStart</item>
    <item name="android:layout_marginStart">@dimen/margin_large</item>
    <item name="android:layout_marginEnd">@dimen/margin_large</item>
    <item name="android:textCursorDrawable">@color/tc_header</item>
    <item name="android:layout_marginTop">@dimen/margin_small</item>
</style>
android android-layout android-edittext material-design
2个回答
1
投票

将这两个属性设置为区域设置

 android:layoutDirection="locale"
 android:textDirection="locale"

0
投票

在MaterialEditText中使用以下属性并删除重力(如果有)和textAlignment

 android:layoutDirection="rtl"
 android:textDirection="rtl"

如果您使用特定布局(例如layout-ar),这将非常有用。更好地避免自定义库和简单使用

 android:layoutDirection="locale"
 android:textDirection="locale"

正如Nermeen Saleh所说

© www.soinside.com 2019 - 2024. All rights reserved.