1. 程式人生 > >Android EditText 輸入回車符自動跳轉至下一個EditText

Android EditText 輸入回車符自動跳轉至下一個EditText

在輸入資訊時,在EditText控制元件輸入回車鍵,常常不是換行二十讓游標直接跳轉到下一個編輯框。該功能主要用到了文字監聽器藉口TextWatcher,主要監聽使用者是否輸入回車符,如果監聽到已輸入回車符,就自動將焦點移動到下一個控制元件,從而實現回車符自動跳轉的要求

TextWatcher介面不瞭解的可以看我上一篇文章

由於程式比較簡單所以直接上程式碼

佈局程式碼

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="sxpi.com.myapplication.MainActivity"> <EditText android:id="@+id/editText1" android
:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>

程式程式碼

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import 
android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; public class MainActivity extends AppCompatActivity { EditText editText1,editText2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText1=(EditText)findViewById(R.id.editText1); editText2=(EditText)findViewById(R.id.editText2); editText1.addTextChangedListener(new JumpTextWatcher()); } private class JumpTextWatcher implements TextWatcher{ @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { String str=s.toString(); if (str.indexOf("\r")>=0 || str.indexOf("\n")>=0){//發現輸入回車符或換行符 editText1.setText(str.replace("\r","").replace("\n",""));//去掉回車符和換行符 editText2.requestFocus();//讓editText2獲取焦點 editText2.setSelection(editText2.getText().length());//若editText2有內容就將游標移動到文字末尾 } } } }