7

プロジェクトで Edit Text を使用しています。

問題は、テキスト ボックスに何かを入力すると表示されるのに、入力した文字数に関係なく、カーソルが開始位置からまったく移動しないことです。また、テキスト ボックス内の特定の文字をクリックしても移動できません。

編集テキストを含むための私の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>
4

5 に答える 5

3

ビューをモデルにバインドしていますか? つまり、MVVM のセットアップはありますか?

その場合、特に双方向バインディングの周期的な更新がないことを確認してください。つまり、ユーザーが文字を入力した場合、モデルを更新すると、EditText コントロールが更新されて繰り返されます。

そのため、Editext コントロールのプロパティによっては、モデルの変更によって更新されるたびに、カーソルが開始位置にリセットされる可能性があります。

この場合、モデルから更新する前に、モデル値と EditText テキスト値の間の単純な同等性チェックで問題を解決する必要があります。

if (txtEdit.text != modelValue)
{
    txtEdit.text = modelValue;
}
于 2016-08-12T15:09:42.370 に答える
0

これらのプロパティを XML ファイルに設定します

  <YourLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:focusable="true" 
     android:focusableInTouchMode="true">

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

</YourLayout>

これを試して。これをJavaコードに入れます。

 EditText et = (EditText)findViewById(R.id.xEt);
 et.setSelection(et.getText().length());
于 2012-12-03T11:10:52.497 に答える