Я борюсь с виртуальной клавиатурой на андроиде. Проблема в том, что я не могу поднять это / надежно спрятать.
Вот код, который отказывается открывать клавиатуру на трех протестированных мной устройствах (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);
}
}