2010-04-12 39 views
0

我想打开软键盘,当我们点击或重点编辑text.Suppose在我的应用程序我有一个Edittext视图和图像视图在那个时候我点击图像视图自动软键盘将被关闭。当我点击或关注当时的edittext软键盘将被打开我能做什么?给我一些suggestions.Thanks提前关闭软键盘当我点击其他视图在android

回答

2

我想你要查找的内容是这样的:Close/hide the Android Soft Keyboard

您可以强制的Android隐藏使用 InputMethodManager的 虚拟键盘,调用 hideSoftInputFromWindow,传入 包含 您的编辑字段的窗口令牌。 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

这将迫使键盘在所有情况下隐藏 。在某些 情况下,你会希望在 InputMethodManager.HIDE_IMPLICIT_ONLY 传递的第二个参数,以确保您 只隐藏键盘,当用户 没有明确迫使其出现 (按住菜单)。

请在发布您的问题之前进行搜索。

0

link mentioned in previous post(我无法发布这个答案,因为线程是受保护的 - 有趣的功能)中描述的方法有效,但答案没有指定WHERE(或WHEN)来执行上述方法。

我的软键盘保持打开状态,即使显示完全不同的视图时也出现问题(通过调用Activity.SetContentView(otherView)。此外,如果用户打开菜单,我希望键盘消失 - 总的来说,我希望输入键盘真的走了!除非用户主动使用它(如应该)

我发现溶液覆盖包含的EditText的onWindowVisibilityChanged和视图的OnWindowsFocusChanged方法:

public class MyView extends LinearLayout { 

EditText myEditText; 


@Override 
protected void onFinishInflate() { 
    myEditText = (EditText)findViewById(R.id.EditText01); 

    //... 

    super.onFinishInflate(); 
} 


    @Override 
protected void onWindowVisibilityChanged(int visibility) { 
    InputMethodManager imm = (InputMethodManager)_activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 
    super.onWindowVisibilityChanged(visibility); 
} 

@Override 
public void onWindowFocusChanged(boolean hasWindowFocus) { 
    if(!hasWindowFocus) { 
    InputMethodManager imm = (InputMethodManager)_activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 
    } 
    super.onWindowFocusChanged(hasWindowFocus); 
} 
// ... 
} 

都重写会在大多数情况下隐藏输入键盘,我仍然需要重复在实现EditText回调接口的onEditorAction的上述两行中。

重写只有一个方法会使行为有点不同,测试并选择你想要做的。

相关问题