1. ホーム
  2. アンドロイド

[解決済み】AndroidでSoft Keyboard Nextをクリックすると別のEditTextに移動する。

2022-04-03 08:32:47

質問

Next'を押すと、User EditTextのフォーカスがPasswordに移動するようにしなければなりません。その後、Passwordから右へ移動し、さらに右へ移動する必要があります。どのようにコーディングすればよいのでしょうか?

<LinearLayout
    android:id="@+id/LinearLayout01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="User Name*" />

    <EditText
        android:id="@+id/txt_User"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true" />

</LinearLayout>


<LinearLayout
    android:id="@+id/LinearLayout02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password*" />

    <EditText
        android:id="@+id/txt_Password"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true"
        android:password="true" />

    <TextView
        android:id="@+id/confirm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password*" />

    <EditText
        android:id="@+id/txt_Confirm"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true"
        android:password="true" />

</LinearLayout>

解決方法は?

フォーカスの取り扱い

フォーカスの移動は、最も近いフォーカスを見つけるアルゴリズムに基づいています。 指定された方向に隣接する まれに、デフォルトのアルゴリズムが開発者の意図した動作と一致しないことがあります。

以下のXML属性を使って、方向ナビゲーションのデフォルトの動作を変更します。

android:nextFocusDown="@+id/.."  
android:nextFocusLeft="@+id/.."    
android:nextFocusRight="@+id/.."    
android:nextFocusUp="@+id/.."  

方向ナビゲーションの他に、タブナビゲーションも使用できます。このためには

android:nextFocusForward="@+id/.."

特定のビューにフォーカスを当てるには、次のように呼び出します。

view.requestFocus()

特定のフォーカス変更イベントをリスンするには View.OnFocusChangeListener


キーボードボタン

を使用することができます。 android:imeOptions キーボードの余分なボタンを処理するためのものです。

<ブロッククオート

エディタに関連するIMEで有効にできる追加機能 を使用して、アプリケーションとの統合を向上させることができます。ここでの定数は は、imeOptions で定義されたものに対応します。

imeOptionsの定数には、様々なアクションやフラグが含まれており、それらの値については上記のリンクを参照してください。

値の例

アクションネクスト :

アクションキーは "next"操作を実行し、ユーザーを次の場所に連れて行きます。 テキストを受け付ける次のフィールド。

ActionDone :

アクションキーは、quot;done"操作を実行し、通常、これ以上入力するものがなく、IMEが閉じられることを意味します。

コード例です。

<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"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="32dp"
        android:layout_marginTop="16dp"
        android:imeOptions="actionNext"
        android:maxLines="1"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_below="@+id/editText1"
        android:layout_marginTop="24dp"
        android:imeOptions="actionDone"
        android:maxLines="1"
        android:ems="10" />

</RelativeLayout>

imeoptionsのイベントをリッスンしたい場合は TextView.OnEditorActionListener .

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            performSearch();
            return true;
        }
        return false;
    }
});