我在项目中使用了“编辑文本”。

问题是,每当我在文本框中键入任何内容时,它都会显示出来,但是无论我键入多少个字符,光标都不会从其起始位置开始移动。另外,我无法通过单击文本框中的任何特定字符来移动。

我的用于包含编辑文本的xml文件是这样的

<EditText
        android:id="@+id/xEt"
        android:layout_width="fill_parent"
        android:layout_height="295dp"
        android:layout_alignParentLeft="true"
        android:ems="10"
        android:focusableInTouchMode="true"
android:focusable="true" >

xml文件是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/xsubLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true" >

    </RelativeLayout>

    <EditText
        android:id="@+id/xEt"
        android:layout_width="wrap_content"
        android:layout_height="295dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:inputType="textMultiLine" >

        <requestFocus />
    </EditText>

</RelativeLayout>

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content" android:id="@+id/xK1"
        android:layout_height="wrap_content" android:orientation="vertical"
        android:visibility="gone">
        <include android:id="@+id/xKeyBoard" layout="@layout/gf"></include>
        <include android:id="@+id/xtop" layout="@layout/top"></include>
                <include android:id="@+id/x11" layout="@layout/x1"></include>
        <include android:id="@+id/x12" layout="@layout/x3"></include>
        <include android:id="@+id/x13" layout="@layout/x4"></include>
        <include android:id="@+id/x14" layout="@layout/x5"></include>

        <include android:id="@+id/x15" layout="@layout/x6"></include>
        <include android:id="@+id/x16" layout="@layout/x7"></include>
        <include android:id="@+id/x17" layout="@layout/x8"></include>
        <include android:id="@+id/x18" layout="@layout/x9"></include>

        <include android:id="@+id/x19" layout="@layout/x10"></include>
        <include android:id="@+id/x20" layout="@layout/x11"></include>

        <include android:id="@+id/x22" layout="@layout/x13"></include>

        <include android:id="@+id/x23" layout="@layout/x14"></include>
        <include android:id="@+id/x24" layout="@layout/x15"></include>
        <include android:id="@+id/x25" layout="@layout/x16"></include>
        <include android:id="@+id/x26" layout="@layout/x17"></include>

        <include android:id="@+id/x27" layout="@layout/x18"></include>
        <include android:id="@+id/x28" layout="@layout/x19"></include>


    </RelativeLayout>
</RelativeLayout>

最佳答案

您是否将 View 绑定(bind)到模型?即您是否有MVVM设置?

如果这样做,请确保没有任何周期性更新,特别是对于双向绑定(bind),即,如果用户键入一个字符,则更新模型,这将反过来更新EditText控件并重复。

因此,根据您的Editext控件属性,每次模型更改对其进行更新时,都可能会将光标重置为开始位置。

在这种情况下,在从模型更新模型值和EditText文本值之间进行简单的相等性检查即可解决该问题。

if (txtEdit.text != modelValue)
{
    txtEdit.text = modelValue;
}

关于Android Edit Text-光标停留在起始位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13681823/

10-09 03:48