3

首先,我为我糟糕的英语语法道歉。

在我的简单 Android 应用程序中有一个toggleButton和。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 回答