edittextがフォーカスされているときにソフトキーボードを表示する方法


461

EditTextがフォーカスされている場合(デバイスに物理キーボードがない場合)にソフトキーボードを自動的に表示したいのですが、2つの問題があります。

  1. Activityが表示されると、EditTextフォーカスされますが、キーボードは表示されません。キーボードを表示するには、もう一度クリックする必要があります(表示されるActivityと表示されます)。

  2. キーボードで[完了]をクリックすると、キーボードは非表示になりEditTextますが、フォーカスは維持され、yは必要ありません(編集が完了したため)。

再開するには、私の問題は、iPhoneのようなものを持っていることです。これは、キーボードを私のEditText状態(フォーカスされている/フォーカスされていない)と同期させ、物理的なキーボードがある場合はもちろんソフトキーボードを表示しません。


<EditText android:id = "@ + id / myEditText" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:imeOptions = "actionDone" />そして、私のアクティビティではthis:EditText editTxt =(EditText)findViewById(R.id.myEditText); editTxt.requestFocus();
Ludovic Landry、2011

2
これは、この投稿のどの回答よりも私をよりよく助けてくれました:stackoverflow.com/a/2418314/1491212
Armel Larcier '30

回答:


628

ソフトキーボードを強制的に表示するには、次を使用できます

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

また、フォーカスを削除するにはEditText、残念ながら、フォーカスViewを取得するためのダミーが必要です。

これが役に立てば幸い


それを閉じるためにあなたは使うことができます

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

これはダイアログで使用するために機能します

public void showKeyboard(){
    InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}

public void closeKeyboard(){
    InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}

2
これを行うと、アクティビティが表示されたときにソフトキーボードが表示されます(それは問題ありません)が、フォーカスがEditTextを離れ、たとえばボタンに移動すると、キーボードは残ります(それは問題です)。
Ludovic Landry

157
既にフォーカスされているダイアログのEditTextでは機能しません。なぜだかわかりません。
Matthias

10
@AbdellahBenhammou、おそらく、ソフト入力を表示する前に編集テキストからrequestFocus呼び出しを実行すると、問題が解決する可能性があります。それは私のためにした。
r1k0 2013

18
@AbdellahBenhammou、これをDialogFragmentのonCreate()で実行します:getDialog()。getWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
フィリップ

22
のみと一緒に働いていたyourEditText.requestFocus():ここで説明するようstackoverflow.com/questions/8991522/...
のVivek Pandeyの

231

私も同じ問題を抱えていました。editText VISIBILITYがGONEからVISIBLEに変更された直後に、フォーカスを設定してソフトキーボードを表示する必要がありました。私は次のコードを使用してこれを達成しました:

new Handler().postDelayed(new Runnable() {

    public void run() {
//        ((EditText) findViewById(R.id.et_find)).requestFocus();
//              
        EditText yourEditText= (EditText) findViewById(R.id.et_find);
//        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//        imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);

        yourEditText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0));
        yourEditText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));                           
    }
}, 200);

それは私にとって100msの遅延で機能しますが、遅延なしで、または1msの遅延だけで失敗しました。

コードのコメント部分は、一部のデバイスでのみ機能する別のアプローチを示しています。OSバージョン2.2(エミュレータ)、2.2.1(実際のデバイス)、および1.6(エミュレータ)でテストしました。

このアプローチにより、多くの苦痛がなくなりました。


48
何かがとても醜くてとても美しいかもしれないとは知りませんでした。どうもありがとうございます!
mkerley 2012年

15
@jellyfishこれはのタップをシミュレートしEditTextます。これを読んでいる他の人にとっては、新しいものHandlerを作成する代わりView.postDelayed()に、yourEditTextウィジェット自体のメソッドを使うこともできます。
Tony Chan

5
これはハックです。DavidChandlerによるはるかに優れたソリューションです。
ベンベダーソン2013

4
David ChandlerのソリューションがすべてのAndroidバージョン/デバイスで機能する場合、およびVISIBILITYがGONEからVISIBLEに変更されたばかりの場合は、YES-代わりに彼のソリューションを使用する必要があります。
マイク・ケスキノフ2013

3
同意した。すべてのAndroidフレーバーで機能するより良いソリューションを知っていますか?
マイク・ケスキノフ2013

162

キーボードを表示させるには、

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

このメソッドは、InputMethodManagerを直接呼び出すよりも信頼性が高くなります。

それを閉じるには、

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

12
これを直接呼び出すよりも信頼できる理由を誰かが説明できますかInputMethodManager?(1つには、raukodraugのソリューションとは異なり、機能しません。)
Matthew

5
私にも効かない。Android 2.3.5での作業。raukodraugの解決策は私には有効です。バージョンの依存関係を検索しましたが、見つかりませんでした。
Hugo Logmans 2013年

2
これは、Android 4.4.2で私にとってはうまくいきました。この投稿のソリューションとして選択されたInputMethodManagerメソッドは、私には機能しませんでした。
Phil

答えでメソッドを使用した後、これを追加して機能しましたが、それなしでは機能しませんでした。thanx
Manny265 2014

2
Android 4.4.2では動作しませんでした。キーボードは表示されますが、非表示にはなりませんでした。
John J Smith 14

87

他に何も機能しない場合は、強制的に表示します

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

そして、後でそれを閉じたい場合は、たとえばonPause()で、次のように呼び出すことができます。

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

4
あなたは正しかった、@ Bolling!他に何もうまくいかなかったとき、あなたのコードは私を救いました。ありがとう!
Willian Paixao 16

3
あなたのコードが私のために働いた唯一のものであり、私はこのページのすべての解決策を試しました!どうもありがとう!
Mattia Ruggiero 2017年

4
強制しないでください。場合によっては、フォアグラウンドからバックグラウンドに移動したときに、キーボードを強制したためにキーボードがそのまま残ることがあります。その断片化の問題ですが、サムスンのデュオで見ました。
j2emanue 2017

キーボードを強制的にオンにしなくてもスタックするのを見たので、通常は常にキーボードのonPause()を閉じるコードがあります。
2018

これでうまく
いき

75

次のコードは、GoogleのSearchViewの4.1ソースコードから略奪したものです。Androidの以前のバージョンでも問題なく機能するようです。

private Runnable mShowImeRunnable = new Runnable() {
    public void run() {
        InputMethodManager imm = (InputMethodManager) getContext()
                .getSystemService(Context.INPUT_METHOD_SERVICE);

        if (imm != null) {
            imm.showSoftInput(editText, 0);
        }
    }
};

private void setImeVisibility(final boolean visible) {
    if (visible) {
        post(mShowImeRunnable);
    } else {
        removeCallbacks(mShowImeRunnable);
        InputMethodManager imm = (InputMethodManager) getContext()
                .getSystemService(Context.INPUT_METHOD_SERVICE);

        if (imm != null) {
            imm.hideSoftInputFromWindow(getWindowToken(), 0);
        }
    }
}

さらに、Control / Activityを作成するときに、次のコードを追加する必要があります。(私の場合は、アクティビティではなく複合コントロールです)。

this.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    public void onFocusChange(View v, boolean hasFocus) {
        setImeVisibility(hasFocus);
    }
});

ありがとう!それは驚くほどうまくいきます。そして、これは、この問題について読んでいるすべての回答とトピックから、より快適なソリューションです。
Rui

37
:-D setImeVisibility(hasFocus)
Matthias

私は実際に「自分の検索ビューをローリング」していたため、この方法を試しました(そうする必要はありませんでしたが、理由がありました)。これは、活動の開始時を除いて、私にとってはうまくいきました。私はandroid:windowSoftInputMode = "alwaysVisible"をアクティビティに追加し、編集テキストですでにrequestFocus()が呼び出されていました。チャンピオンのように機能します。
javahead76 2013年

removeCallbacks(mShowImeRunnable)の必要性はありますか?ランナブルがキューから実行するように選択されると、それも同時にキューから削除されると思いましたか?
Cheok Yan Cheng

1
いくつかのバリエーションを試した後、これは私(Android 4.42)で一貫して機能した唯一のものでした。Thx
ジョンJスミス

34

android:windowSoftInputMode="stateAlwaysVisible" ->マニフェストファイル。

edittext.requestFocus(); ->コード内。

これにより、アクティビティが表示されるときに編集テキストに要求フォーカスがあるソフトキーボードが開きます。


2
これにより、アクティビティの作成時にキーボードが開きます。
xpto 2013

質問には答えませんが、私を助けました:)
S.Thiongane 2013

API 22でリクエストフォーカスなしでキーを開く
デビッド

私の場合は問題なく動作します。なぜxmlからのfocus属性のみのリクエストもで言及する必要があるのでしょうかmanifest
sud007

30

以下のコードを使用して、いくつかの単純なケースで最近運がよかった。すべてのテストを終えたわけではありませんが...

EditText input = (EditText) findViewById(R.id.Input);
input.requestFocus();    
input.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0));
input.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));

そしてプレストキーボードが現れます。


私の場合、オプションの情報を追加するボタンがありました。button.onClickハンドラーに、上記のコードが追加され、オプションの情報の入力のためにソフトキーボードが強制的に表示されます。ドロイド2.2.2
2011年

これは良い解決策ですが、MotionEventオブジェクトを作成し、使用後にrecycle()を呼び出して、後で呼び出し元が再利用できるようにすることを忘れないでください。
ジンボブ2014年

あなただけの引数としてACTION_UP ...と1 dispatchTouchEvent()必要
モハメドJunaid

15

ソフトキーボードを強制的に表示させてみてください。

...
dialog.show();
input.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

1
これは私にとってはうまくいきます...私はこれらのInputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);を試しました imm.showSoftInput(name、inputMethodManager.SHOW_IMPLICIT); またはgetWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); しかし、彼らの誰も働いていませんでした。
GünayGültekin

10

raukodraugの答えが機能しない場合があります。私はいくつかの試行錯誤でこのようにしています:

public static void showKeyboard(Activity activity) {
    if (activity != null) {
        activity.getWindow()
                .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
    }
}

public static void hideKeyboard(Activity activity) {
    if (activity != null) {
        activity.getWindow()
                .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    }
}

そしてEditText部分:

    editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
                hideKeyboard(getActivity());
            } else {
                showKeyboard(getActivity());
            }
        }
    });

1
これは、Android 5で私のために機能した唯一のソリューションです
user1021430

10

キーボードを非表示にするには、これを使用します:

getActivity().getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

キーボードを表示するには:

getActivity().getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

DialogFragmentの場合、これをオーバーライドされたで呼び出すonStart()ことができgetDialog().getWindow()、の代わりとして使用できますgetActivity().getWindow()
Mr-IDE

10

Kotlinの場合、この拡張機能を使用するだけです。

fun EditText.showKeyboard() {
    val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}

fun EditText.hideKeyboard() {
    val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    imm.hideSoftInputFromWindow(this.windowToken, 0)
}

ちょうど私が探していたもの。
lasec0203

8

フラグメントについては、その動作を確認してください:

 displayName = (EditText) view.findViewById(R.id.displayName);
    InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

7

showSoftInput まったく私のために働いていませんでした。

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

android:windowSoftInputMode="stateVisible" 

6

アクティビティアニメーションでソフトキーボードを無効にできることを発見したとき、ソフトキーボードに関する私の問題は解決したと信じています。でインテントを呼び出すとき

i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);

そして

overridePendingTransition(0, 0);

ソフトキーボードを非表示にすることができ、表示する方法がありません。


6

私はさまざまな異なる状況で同じ問題を抱えていましたが、解決策の一部は機能するものの、機能しないものがあるので、ここでは、ほとんどの状況で機能する統合ソリューションを示します。

public static void showVirtualKeyboard(Context context, final View view) {
    if (context != null) {
        final InputMethodManager imm =  (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        view.clearFocus();

        if(view.isShown()) {
            imm.showSoftInput(view, 0);
            view.requestFocus();
        } else {
            view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
                @Override
                public void onViewAttachedToWindow(View v) {
                    view.post(new Runnable() {
                        @Override
                        public void run() {
                            view.requestFocus();
                            imm.showSoftInput(view, 0);
                        }
                    });

                    view.removeOnAttachStateChangeListener(this);
                }

                @Override
                public void onViewDetachedFromWindow(View v) {
                    view.removeOnAttachStateChangeListener(this);
                }
            });
        }
    }
}

6
editText.post(new Runnable() {
    @Override
    public void run() {
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
    }
});

6

私はここですべてを組み合わせて、私にとってはうまくいきます:

public static void showKeyboardWithFocus(View v, Activity a) {
    try {
        v.requestFocus();
        InputMethodManager imm = (InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);
        a.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

6

それは私のために働いた。これを試して、キーボードを表示することもできます。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

5

コードスニペット 。。。

public void hideKeyboard(Context activityContext){

    InputMethodManager imm = (InputMethodManager)
            activityContext.getSystemService(Context.INPUT_METHOD_SERVICE);

    //android.R.id.content ( http://stackoverflow.com/a/12887919/2077479 )
    View rootView = ((Activity) activityContext)
            .findViewById(android.R.id.content).getRootView();

    imm.hideSoftInputFromWindow(rootView.getWindowToken(), 0);
}

public void showKeyboard(Context activityContext, final EditText editText){

    final InputMethodManager imm = (InputMethodManager)
            activityContext.getSystemService(Context.INPUT_METHOD_SERVICE);

    if (!editText.hasFocus()) {
        editText.requestFocus();
    }

    editText.post(new Runnable() {
        @Override
        public void run() {
            imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
        }
    });
}

5

Kotlin フォーカスのあるキーボードを表示するための拡張機能。

これは以前の応答の組み合わせで、長すぎるか不完全です。

この拡張機能は、フォーカスを要求した後にソフトキーボードを表示するランナブルをメッセージキューに投稿します。

fun View.showSoftKeyboard() {
    post {
        if (this.requestFocus()) {
            val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
            imm?.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
        }
    }
}

その後、必要に応じて任意のビューから呼び出します。

editText.showSoftKeyboard()


4
final InputMethodManager keyboard = (InputMethodManager) ctx.getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

4

マニフェスト内:

android:windowSoftInputMode="stateAlwaysVisible"-最初に起動したキーボード。 android:windowSoftInputMode="stateAlwaysHidden" -最初は非表示のキーボード。

"adjustPan"キーボードが起動すると画面が自動調整されるので、私も使用するのが好きです。

 <activity
      android:name="YourActivity"
      android:windowSoftInputMode="stateAlwaysHidden|adjustPan"/>

4

EditTextビューにこの行を追加するだけです。

android:isScrollContainer="true"

TADA-キーボードが自動的に表示されるようになりました!

私は同様の問題を抱えており、このシンプルで奇妙な解決策を発見しました。

ここですでにuser3392439で言及されているように、フォーカス時のキーボードの外観は、XMLファイル内のスクロールコンポーネントの存在と何らかの形で奇妙に関連しています。

同じXMLで上記の行を構成する別の EditTextビューが存在する場合でも、現在どのEditTextがフォーカスされていても、キーボードが表示されます。

XMLファイルにスクロールコンポーネントを構成する表示ビューが少なくとも1つある場合、キーボードがフォーカスに自動的に表示されます。

スクロールしない場合-EditTextをクリックしてキーボードを表示する必要があります。


これは非常に奇妙ですが、それは間違いなく動作します-私がしようとしていたrequesFocus()クリックハンドラ内から、これは明示的なshowSoftInput SHOW_FORCED以外の唯一の方法である
描いた

神聖な*、感謝の男。それが機能する理由はわかりませんが、さまざまなメーカーの8つのデバイスでテストしましたが、常に機能しました!
Antonio Vlasic

3

(上に与えられたすべてのソリューションInputMethodManagerの中で相互作用OnFocusChangeListener.onFocusChangeのリスナーは、あなたに添付のEditTextは、アクティビティで単一の編集がある場合は機能。

私の場合、2つの編集があります。

 private EditText tvX, tvY;
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 tvX.setOnFocusChangeListener(this);
    tvY.setOnFocusChangeListener(this);

@Override
public void onFocusChange(View v, boolean hasFocus) {       
    InputMethodManager imm =  (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    if(tvX.hasFocus() || tvY.hasFocus()) {            
        imm.showSoftInput(v, 0);            
    } else {
        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);         
    }       
};

onFocusChangeは、hasFocus = true(キーボードが表示されている)のtvXに対してトリガーされますが、hasFocus = true(キーボードが非表示になっている)のtvYに対してトリガーされることを確認しました。結局、キーボードは見えませんでした。

「EditTextテキストにフォーカスがある場合にキーボードを表示する」の場合、一般的なソリューションには正しい記述が必要です


3

アクティビティのonResume()セクションで、メソッドbringKeyboard();を呼び出すことができます。

 onResume() {
     EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
     bringKeyboard(yourEditText);
 }


  protected boolean bringKeyboard(EditText view) {
    if (view == null) {
        return false;
    }
    try {
      // Depending if edittext has some pre-filled values you can decide whether to bring up soft keyboard or not
        String value = view.getText().toString();
        if (value == null) {
            InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            return true;
        }
    } catch (Exception e) {
        Log.e(TAG, "decideFocus. Exception", e);
    }
    return false;
  }

なにWidgetUtils.showKeyboard?ここで最も重要な部分です。
TWiStErRob 2015

2

どの回答も私にとってうまくいきませんでした。ここに簡単な方法があります。

searchEditText.setVisibility(View.VISIBLE);
                final Handler handler=new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        searchEditText.requestFocus();
                    }
                }, 400);

requestFocus()メソッドを400ミリ秒遅らせただけです。


おかげで、キーボードが表示されるまでに多少の遅延が必要です...
hkh114

1

私のアプリの1つで、アクティビティの入力時にソフトキーボードが自動的に表示されていたため、奇妙な動作を発見しました(onCreateにはeditText.requestFocus()があります)。

さらに掘り下げてみると、レイアウトの周りにScrollViewがあるためだとわかりました。ScrollViewを削除した場合、動作は元の問題ステートメントに記載されているとおりです。既にフォーカスされているeditTextをクリックしたときにのみ、ソフトキーボードが表示されます。

それがうまくいかない場合は、ScrollViewを入れてみてください-とにかく無害です。


1

ビューアニメーションを使用し同様の問題が発生しました。そのため、アニメーションリスナーを配置して、アニメーションが終了するのを待ってから、表示された編集テキストへのキーボードアクセスを要求しようとします。

    bottomUp.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            if (textToFocus != null) {
                // Position cursor at the end of the text
                textToFocus.setSelection(textToFocus.getText().length());
                // Show keyboard
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.showSoftInput(textToFocus, InputMethodManager.SHOW_IMPLICIT);
            }
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }
    });

1

このようにフォーカスをリクエスト/クリアする必要があるswithviewで使用するためのraukodraugに同意します:

    final ViewSwitcher viewSwitcher = (ViewSwitcher) findViewById(R.id.viewSwitcher);
    final View btn = viewSwitcher.findViewById(R.id.address_btn);
    final View title = viewSwitcher.findViewById(R.id.address_value);

    title.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            viewSwitcher.showPrevious();
            btn.requestFocus();
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(btn, InputMethodManager.SHOW_IMPLICIT);
        }
    });

    // EditText affiche le titre evenement click
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            btn.clearFocus();
            viewSwitcher.showNext();
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(btn.getWindowToken(), 0);
            // Enregistre l'adresse.
            addAddress(view);
        }
    });

よろしく。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.