web-dev-qa-db-ja.com

EditTextにプログラムでフォーカスを設定(およびキーボードを表示)するにはどうすればよいですか

次のようなビューを含むレイアウトがあります。

<LinearLayout>
<TextView...>
<TextView...>
<ImageView ...>
<EditText...>
<Button...>
</linearLayout>

EditTextにプログラムでフォーカスを設定(キーボードを表示)するにはどうすればよいですか?

私はこれを試してみましたが、Activityを正常に起動したときにのみ機能しますが、TabHostで起動すると機能しません。

txtSearch.setFocusableInTouchMode(true);
txtSearch.setFocusable(true);
txtSearch.requestFocus();
144
Houcine

これを試して:

EditText editText = (EditText) findViewById(R.id.myTextViewId);
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

http://developer.Android.com/reference/Android/view/View.html#requestFocus()

298
David Merriman

つかいます:

editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
144
ungalcrys

これは私のために働いた、おかげで ngalcrys

キーボードを表示:

editText = (EditText)findViewById(R.id.myTextViewId);
editText.requestFocus();
InputMethodManager imm = (InputMethodManager)getSystemService(this.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);

キーボードを隠す:

InputMethodManager imm = (InputMethodManager) getSystemService(this.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
40
Danilo Raspa

showSoftInputはまったく機能していませんでした。

入力モードを設定する必要があると考えました:Android:windowSoftInputMode="stateVisible"(ここではマニフェストのActivityコンポーネント)

このヘルプを願っています!

37
vincebodi
final EditText tb = new EditText(this);
tb.requestFocus();
tb.postDelayed(new Runnable() {
    @Override
    public void run() {
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.showSoftInput(tb, InputMethodManager.SHOW_IMPLICIT);
    }
}, 1000);
27
Kunal Bhatia

ソフトキーボードを表示および非表示にするためのkotlin拡張機能を作成する方法は次のとおりです。

fun View.showKeyboard() {
  this.requestFocus()
  val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
  inputMethodManager.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}

fun View.hideKeyboard() {
  val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
  inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}

次に、これを行うことができます:

editText.showKeyboard()
// OR
editText.hideKeyboard()
8
alvarlagerlof

キーボードを非表示および表示するためのKeyboardHelperクラス

import Android.content.Context;
import Android.view.View;
import Android.view.inputmethod.InputMethodManager;
import Android.widget.EditText;

/**
 * Created by khanhamza on 06-Mar-17.
 */

public class KeyboardHelper {

    public static void hideSoftKeyboard(Context context, View view) {
        if (context == null) {
            return;
        }

        InputMethodManager imm = (InputMethodManager) context
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);

    }

    public static void hideSoftKeyboard(Context context, EditText editText) {

        InputMethodManager imm = (InputMethodManager) context
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }


    public static void openSoftKeyboard(Context context, EditText editText) {
        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
    }

}
1
Hamza Khan

最初の方法

    etPassword.post(() -> {
        etPassword.requestFocus();
        InputMethodManager manager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
        manager.showSoftInput(etPassword, InputMethodManager.SHOW_IMPLICIT);
    });

2番目の方法

マニフェスト内:

    <activity
        Android:name=".activities.LoginActivity"
        Android:screenOrientation="portrait"
        Android:windowSoftInputMode="stateVisible"/>

コード内:

etPassword.requestFocus();
0
Hadi Note

私は多くの方法を試してみましたが、フラグメントから編集テキストを含むアクティビティへの共有遷移を使用しているため、うまくいきません。

ところで、私の編集テキストもLinearLayoutでラップされています。

私はフォーカスを要求するためにわずかな遅延を追加し、以下のコードは私のために働いた:(Kotlin)

 et_search.postDelayed({
     editText.requestFocus()

     showKeyboard()
 },400) //only 400 is working fine, even 300 / 350, the cursor is not showing

showKeyboard()

 val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
 imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0)
0
veeyikpong