为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式隐藏/显示Android软键盘

以编程方式隐藏/显示Android软键盘

MYYA 2019-08-26 10:01:58
以编程方式隐藏/显示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


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 405 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信