Виртуальная клавиатура Android не показана - PullRequest
0 голосов
/ 20 февраля 2012

Я борюсь с виртуальной клавиатурой на андроиде. Проблема в том, что я не могу поднять это / надежно спрятать.

Вот код, который отказывается открывать клавиатуру на трех протестированных мной устройствах (ZTE Blade, Galaxy Nexus и Acer A500).

Я могу скрыть клавиатуру и включить ее, но не могу показать ее. Я мог бы использовать переключатель, чтобы показать / скрыть его, но он недостаточно надежен (поскольку, похоже, нет способа узнать, отображается клавиатура или нет).

Полный код, посмотрите, сможете ли вы заставить его работать:

package com.test.keyboardtest;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
    public class KeyboardTestActivity extends Activity {
    LinearLayout myLayout = null;
    TextView myView = null;
    Button toggleButton = null;
    Button showButton = null;
    Button hideButton = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        myLayout = new LinearLayout(this);
        myView = new TextView(this);
        showButton = new Button(this);
        hideButton = new Button(this);
        toggleButton = new Button(this);

        myLayout.setOrientation(LinearLayout.VERTICAL);
        myLayout.addView(myView); 
        myLayout.addView(showButton);
        myLayout.addView(hideButton);
        myLayout.addView(toggleButton);


        showButton.setText("Show Keyboard");
        showButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                mgr.showSoftInput(myView, 0 );
            }
        });

        hideButton.setText("Hide Keyboard");
        hideButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                mgr.hideSoftInputFromWindow(myView.getWindowToken(), 0 );
            }
        });

        toggleButton.setText("Toggle Keyboard");
        toggleButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);                
                mgr.toggleSoftInput(0,0);
            }
        });
        this.setContentView(myLayout);        
    }
}

1 Ответ

0 голосов
/ 20 февраля 2012

ПОПРОБУЙТЕ

Чтобы показать клавиатуру:

.

Activity.this.getWindow () setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

Чтобы скрыть клавиатуру:

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

...