我知道很多时候都会问这些类型的问题。但仍然没有人给出完美答案。
我有疑问:
我想从 EditText1 **转移到另一个** EditText2 。 我已经检测到editText1,但是如何将光标移动到editText2。?
简而言之,我必须将光标位置从一个editText1直接移动到另一个EditText2。
答案 0 :(得分:7)
我遇到了这类问题并找到了解决方案。
这里我有两个editText,
如果按“a”,我的光标将移至下一步。我使用下面的代码来做它。
final EditText editText = (EditText) findViewById(R.id.editText1);
editText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v , int keyCode , KeyEvent event) {
EditText editText2 = (EditText) findViewById(R.id.editText2);
// TODO Auto-generated method stub
if (keyCode == event.KEYCODE_A) {
Selection.setSelection((Editable) editText2.getText(),editText.getSelectionStart());
editText2.requestFocus();
}
return true;
}
});
如果您遇到任何有关此问题的错误,请与我们联系。 如果我的回答对您有帮助,请接受并评价为upvote。
答案 1 :(得分:1)
这是一个有效的例子,希望这有帮助。
XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Some string of text"
/>
<EditText
android:id="@android:id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Some string of text"
/>
<Button
android:id="@android:id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
/>
</LinearLayout>
类别:
public class Example extends Activity {
TextView text1;
TextView text2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text1 = (EditText) findViewById(android.R.id.text1);
text2 = (EditText) findViewById(android.R.id.text2);
Button button = (Button) findViewById(android.R.id.button1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
Selection.setSelection((Editable) text2.getText(), text1.getSelectionStart());
text2.requestFocus();
}
});
}
}
答案 2 :(得分:1)
设置onKeyListener以检测按下的每个键上按下的键检查您的条件以及何时满足您的条件设置edittext属性edittext2.requestFocus();
答案 3 :(得分:1)
为此,您需要做的是...在xml中的EditText标记中添加以下两个属性,最后一个EditText除外(如果您也将其添加到最后一个EditText,则光标控件将再次进入当您按键盘上的Enter / next键时,将其移至第一个EditText)
<EditText
.
.
android:singleLine="true"
android:imeOptions="actionNext"
.
.
/>
希望这会有所帮助
答案 4 :(得分:0)
我测试了所有以前的代码段,发现一切正常。但我发现只是在调用&#34; requestFocus()&#34;使用正确的edittext对象也可以。根据问题,ans可以是:
edittext2.requestFocus();
这对我来说很好。如果我错了,请纠正我。