3

まず、英語の文法が下手だったことをお詫びします。

私のシンプルな Android アプリケーションにはtoggleButtonandがあります。EditTextトグル ボタンeditTextボックスをクリックすると、パスワード フィールドと通常のテキスト フィールドに変わります。それは完全に機能していますが、トグルボタンをクリックするとカーソルが常にテキストの先頭に移動するという問題があります。

例: タイプスタックが ..... と表示される場合、トグル ボタンをクリックした後、単語が表示されますが、カーソルは「s」の前に移動し、「k」の後に留まりません。

この問題を修正するにはどうすればよいですか?

これはEditTextトグルボタンのxmlコードです

    <EditText
            android:id="@+id/etCommand"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:hint="@string/command"
            android:password="true" />
<ToggleButton
            android:id="@+id/tglBtn"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="75"
            android:checked="true"
            android:onClick="changeField"
            android:paddingBottom="5dp"
            android:text="ToggleButton" />

そして、次のコードを使用してその動作を変更します

if (passTog.isChecked()) 
    {
        input.setInputType(InputType.TYPE_CLASS_TEXT| InputType.TYPE_TEXT_VARIATION_PASSWORD);
    } 
    else 
    {
        input.setInputType(InputType.TYPE_CLASS_TEXT);
    }

前もって感謝します。

4

3 に答える 3

3

答えは自分で見つけた

if (passTog.isChecked()) 
    {
        input.setInputType(InputType.TYPE_CLASS_TEXT| InputType.TYPE_TEXT_VARIATION_PASSWORD);
        input.setSelection(input.length());
    } 
    else 
    {
        input.setInputType(InputType.TYPE_CLASS_TEXT);
        input.setSelection(input.length());
    }
于 2015-04-17T04:15:48.457 に答える
0

次のことをお勧めします

int selstart = input.getSelectionStart();
int selend = input.getSelectionEnd();
input.setInputType(passTog.isChecked() ? (InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD) : (InputType.TYPE_CLASS_TEXT));
input.setSelection(selstart,selend);
于 2015-04-17T04:14:05.033 に答える
0

ここで、このコードを使用してカーソルを の最後に置くことをテストしますEditText

yourEditText.setSelection(yourEditText.getText().length());
于 2015-04-17T04:24:13.137 に答える