9

このコードはランドスケープモードでは機能しないようです。

EditText destinationSearch = (EditText) findViewById(R.id.destinationSearch); 

destinationSearch.requestFocus(); InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(destinationSearch、InputMethodManager.SHOW_IMPLICIT);

ソフトキーボードをランドスケープモードで表示するための解決策はありますか?

4

4 に答える 4

12

showforcedを使用する必要があります

InputMethodManager imm;
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
imm.showSoftInput(this.editText,InputMethodManager.SHOW_FORCED);
于 2011-01-25T13:59:07.670 に答える
3

その理由は、ランドスケープモードでは、ほとんどの場合、ソフトキーボードが新しいフルスクリーンウィンドウに配置されるためです。Bakihが言ったように、forceは機能しますが、フルスクリーンウィンドウにはより多くの効果があるため、SHOW_FORCEDも機能します。

追加したい

    <item name="android:imeOptions">flagNoFullscreen</item>

EditTextStyleに追加して、onGlobalLayout()などをいつでもキャッチできるようにします。これで、SHOW_IMPLICITを使用できます。UIがこのような小さな領域で見栄えがすることを確認し、不要な場合はオートコレクトを削除してください。

于 2015-02-19T23:18:25.113 に答える
0
EditText editText = (EditText)findViewById(R.id.editText);

editText.setFocusableInTouchMode(false);

final Context context = this;

editText.setOnClickListener(new OnClickListener() {

    @Override 
    public void onClick(View v) {

        v.requestFocusFromTouch();

        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(v, InputMethodManager.SHOW_FORCED);

    } 
}); 
于 2015-06-06T18:02:01.997 に答える
0

より単純なXMLの変更は https://stackoverflow.com/a/13179855/1029110に答えます

 <EditText   
        android:id="@+id/txtInLandscapeVw"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:imeOptions="flagNoExtractUi">   
        <requestFocus />
    </EditText>

だから追加

android:imeOptions = "flagNoExtractUi

<requestFocus />

于 2020-10-15T18:45:23.390 に答える