以编程方式隐藏/显示Android软键盘首先,我已经看到了这个帖子。我试过那里接受的方法..但没有什么对我有用..我的应用程序中有两个屏幕。第一个有2个EditText - 一个用于用户名,一个用于密码第二个有一个ListView和一个EditText - 来过滤listView在我的第一个屏幕中,我希望用户名EditText专注于启动,键盘应该是可见的 ..这是我的实现(通过删除不必要/不相关的代码简化)..app_login.xml<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="20dip"
android:paddingRight="20dip">
<EditText android:id="@+id/username"
android:singleLine="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:hint="Username"
android:imeOptions="actionDone" android:inputType="text"
android:maxLines="1"/>
<EditText android:id="@+id/password"
android:password="true"
android:singleLine="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Password" /></LinearLayout>AppLogin.javaclass AppLogin extends Activity{
private EditText mUserNameEdit = null;
private EditText mPasswordEdit = null;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.app_login);
mUserNameEdit = (EditText) findViewById(R.id.username);
mPasswordEdit = (EditText) findViewById(R.id.password);
/* code to show keyboard on startup.this code is not working.*/
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mUserNameEdit, InputMethodManager.SHOW_IMPLICIT);
}//End of onCreate()}好吧,键盘在启动时没有显示。我的设计非常需要键盘。现在到第二页 .. 我已经说过我有一个listView和EditText那里.. 我希望我的键盘在启动时隐藏,只有在用户触摸editText时出现 ..你能相信吗?无论我尝试什么软键盘在我加载活动时显示 ..我无法隐藏它。简化在登录页面(第一页)我希望我的键盘在启动时可见。在SecondPage上我希望首先隐藏键盘,仅在用户触摸editText时显示而且我的问题是我在两种情况下正好相反 ...希望有人在此之前遇到过这个问题。我正在模拟器和HTC Desire手机上进行测试。
3 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
@Override protected void onResume() { super.onResume(); mUserNameEdit.requestFocus(); mUserNameEdit.postDelayed(new Runnable() { @Override public void run() { // TODO Auto-generated method stub InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); keyboard.showSoftInput(mUserNameEdit, 0); } },200); //use 300 to make it run when coming back from lock screen }
我非常努力地找到了一个解决方案......每当一个新的活动开始,然后键盘打开但我们可以在onResume中使用Runnable并且它工作正常,所以请尝试这个代码并检查...
更新1
在你的。中添加这一行 AppLogin.java
mUserNameEdit.requestFocus();
在你的这一行 AppList.java
listview.requestFocus()'
在此之后检查您的应用程序是否无效,然后在您的AndroidManifest.xml
文件中添加此行
<activity android:name=".AppLogin" android:configChanges="keyboardHidden|orientation"></activity><activity android:name=".AppList" android:configChanges="keyboard|orientation"></activity>
原始答案
InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);
用于隐藏键盘
imm.hideSoftInputFromWindow(ed.getWindowToken(), 0);
用于显示键盘
imm.showSoftInput(ed, 0);
专注于EditText
ed.requestFocus();
其中ed是EditText
添加回答
举报
0/150
提交
取消