我在项目中使用了“编辑文本”。
问题是,每当我在文本框中键入任何内容时,它都会显示出来,但是无论我键入多少个字符,光标都不会从其起始位置开始移动。另外,我无法通过单击文本框中的任何特定字符来移动。
我的用于包含编辑文本的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/