猿问

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

以编程方式隐藏/显示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.java

class 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时出现 ..你能相信吗?无论我尝试什么软键盘在我加载活动显示 ..我无法隐藏它。

简化

  1. 在登录页面(第一页)我希望我的键盘在启动时可见。

  2. 在SecondPage上我希望首先隐藏键盘,仅在用户触摸editText时显示

而且我的问题是我在两种情况下正好相反 ...希望有人在此之前遇到过这个问题。我正在模拟器和HTC Desire手机上进行测试。

MYYA
浏览 406回答 3
3回答

德玛西亚99

@Override &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;void&nbsp;onResume()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.onResume(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mUserNameEdit.requestFocus(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mUserNameEdit.postDelayed(new&nbsp;Runnable()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;run()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputMethodManager&nbsp;keyboard&nbsp;=&nbsp;(InputMethodManager) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getSystemService(Context.INPUT_METHOD_SERVICE); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyboard.showSoftInput(mUserNameEdit,&nbsp;0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},200);&nbsp;//use&nbsp;300&nbsp;to&nbsp;make&nbsp;it&nbsp;run&nbsp;when&nbsp;coming&nbsp;back&nbsp;from&nbsp;lock&nbsp;screen &nbsp;&nbsp;&nbsp;&nbsp;}我非常努力地找到了一个解决方案......每当一个新的活动开始,然后键盘打开但我们可以在onResume中使用Runnable并且它工作正常,所以请尝试这个代码并检查...更新1在你的。中添加这一行&nbsp;AppLogin.javamUserNameEdit.requestFocus();在你的这一行&nbsp;AppList.javalistview.requestFocus()'在此之后检查您的应用程序是否无效,然后在您的AndroidManifest.xml文件中添加此行<activity&nbsp;android:name=".AppLogin"&nbsp;android:configChanges="keyboardHidden|orientation"></activity><activity&nbsp;android:name=".AppList"&nbsp;android:configChanges="keyboard|orientation"></activity>原始答案&nbsp;InputMethodManager&nbsp;imm&nbsp;=&nbsp;(InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);用于隐藏键盘&nbsp;imm.hideSoftInputFromWindow(ed.getWindowToken(),&nbsp;0);用于显示键盘&nbsp;imm.showSoftInput(ed,&nbsp;0);专注于EditText&nbsp;ed.requestFocus();其中ed是EditText
随时随地看视频慕课网APP

相关分类

Android
Java
我要回答