在marshmallow rtl支持的布局中编辑文本光标中断

时间:2016-03-04 06:01:08

标签: android android-edittext

enter image description here

我在棉花糖面临着奇怪的问题。 当语言环境为ar并且我输入英文文本时,光标会在edittext中断

参考截图

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:gravity="left|start"
    android:hint="@string/app_name"
    android:inputType="textPassword"
    android:padding="10dp"
    android:textAlignment="viewStart"
    android:textDirection="locale">
    <requestFocus/>

5 个答案:

答案 0 :(得分:1)

我在下面解决了它。

在xml布局中,对于编辑文本字段,请添加此项 - &gt; android:textDirection="anyRtl"

在这里,&#34; editText&#34;是您编辑文本字段的视图。即,

EditText editText = (EditText) findViewById(R.id.edit_text); 

然后以编程方式为该编辑文本添加文本观察器。

    editText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    editText.setSelection(s.length()); // this line is very important for setting cursor position
                }

                @Override
                public void afterTextChanged(Editable s) {

                }
            });
        }

这对我有用!

答案 1 :(得分:0)

设置android:textCursorDrawable="@null"对我有用

答案 2 :(得分:0)

也许这两个光标/插入符号与Android管理两种不同方向语言(RTL和LTR)的方式有关。像这个主要和次要插入符号图片:https://ux.stackexchange.com/a/39639/81811

我想你也应该注意引力。你强迫左派和开始。在LTR语言中,文本的开头位于左侧,但是当您使用阿拉伯语时,您说您想要左右两侧的重力(因为RTL语言的开头是最右边的字符)。

答案 3 :(得分:0)

嗨我对基于rtl的语言环境也有同样的问题。 所以我在EditText

下面做了以下属性
 android:textDirection="ltr"
 android:textAlignment="viewStart"
 android:gravity="start"
  

以上属性修复了两个游标问题

以上属性声明我们已将EditText设计为left to right(ltr)

一个,文字应从left i.e start开始。 因此操作系统将反转rtl locale的方向。

这适用于具有rtl

的阿拉伯语言

答案 4 :(得分:0)

我遇到了同样的问题。以下是我的解决方案:

<EditText
       android:id="@+id/etCode"
       style="@style/CodeFieldEdittext"
       android:gravity="end|center_vertical"
       android:imeOptions="actionDone"
       android:inputType="text"
       android:text="" />

在styles.xml中

<style name="CodeFieldEdittext">
        <item name="android:background">@null</item>
        <item name="android:textCursorDrawable">@drawable/code_blue_cursor</item>
        <item name="android:textColor">@color/colorFieldBg</item>
        <item name="android:textSize">16sp</item>
        <item name="android:maxLines">1</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">40dp</item>
        <item name="android:textColorHint">@color/colorFieldHint</item>
    </style>

可绘制光标:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size android:width="1dp" />
    <solid android:color="@color/colorFieldBg" />
</shape>