如何在按钮单击时关闭键盘?我有一个片段,它有一个EditText和两个按钮.一个提交EditText内容,另一个只是关闭片段.现在当片段消失时,键盘会停留.但是,按后退按钮会关闭键盘或单击"完成"也会关闭它.但我需要的是当片段关闭时键盘消失.
我在这里,这里或这里尝试过类似问题的解决方案,但似乎都没有效果.大多数人扔了一个NullPointerException.一切都是为了活动而不是碎片.调用键盘的代码有效:
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
Run Code Online (Sandbox Code Playgroud)
但是我必须添加getActivity()才能使它工作.
任何帮助将不胜感激.
android android-softkeyboard android-edittext android-fragments
我有一个非常简单的屏幕,有几个EditText小部件和一个按钮.在模拟器中,当我单击EditText小部件时,会出现一个虚拟键盘.但是,我似乎无法摆脱它.单击屏幕上的空白区域不会使其消失.只需单击虚拟返回键或硬件后退按钮即可消失.
我没有真正的Android手机,所以这只是一个模拟器,或者在实际设备上会是这样的.如果是,当我点击表单上的其他地方时,我该怎么做才能使虚拟键盘消失?
我正在开发一个包含多个input[type=numer]元素的应用.Android现在只有.
内置数字键盘有两个问题:
* it's inconsistent (different on different versions of Android)
* it has unnecessary keys (space, dash, comma and "next") which add confusion.
Run Code Online (Sandbox Code Playgroud)
我想要一个只有键盘numbers, comma and backspace.那可能吗?
编辑2013年10月3日.出现了第三个问题,这是迄今为止最糟糕的问题.看起来三星决定从他们的数字键盘跳过十进制字符("."),至少是input[type=numer]在浏览器中获得焦点时弹出的那个.似乎所有Galaxy S4设备都受到影响(我在S4 Mini上看过它,我无法访问许多三星设备......我看到的都是Nexus爱好者:-)).我在谷歌找不到这个问题,但我看到Galaxy S4的用户在2012年抱怨它(几周前我在一台S3上尝试过它就可以了).
长话短说,仔细考虑之后,我决定用html/javascript实现我自己的键盘(三星太重要了,因为它我得到了不好的评论,我认为我无法做任何事情来解决它).我正在重写我的应用程序,我会尽力记住并在完成后讲述故事.
编辑2013年12月3日.我目前的解决方案(仍处于alpha阶段,应用程序重写比我想象的要长)是一个完全用javascript实现的键盘.我使用常规<span>元素而不是<input>来防止OS键盘弹出.作为额外的好处,我可以控制键盘的所有内容,所以我添加了一些算术键(x, - ,*,/,(和)),用户可以输入表达式,例如"3x(2 + 5.5) )"而不是"15".我会在应用程序准备就绪时链接到该应用程序(至少还需要几周时间).
我遇到这种情况,我检查软键盘是否打开,我想在代码中解散,当我使用下面的代码时它无法解除键盘,因为代码找不到任何焦点,但键盘仍然打开,所以我怎么能隐藏它?
private void hideSoftKeyboard() {
Activity activity = (Activity) sContext;
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
//((Activity) sContext).getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
} else {
Log.i(sClassTag,"focus not found");
}
}
Run Code Online (Sandbox Code Playgroud) 在我的对话框片段中,我能够显示键盘使用
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT STATE_VISIBLE);
Run Code Online (Sandbox Code Playgroud)
但我无法隐藏它dismiss.
我试过了
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Run Code Online (Sandbox Code Playgroud)
和
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)
两者都不起作用.
我也尝试使用显示和隐藏键盘
InputMethodManager inputManager = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.toggleSoftInput(0, 0);
Run Code Online (Sandbox Code Playgroud)
和
InputMethodManager inputManager = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
但这些无法显示或隐藏键盘.
public static class MyDialogFragment extends DialogFragment
{
@Nullable @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.inflate(R.layout.my_input_dialog, container, false);
}
@Override
public void onViewCreated(View v, Bundle savedInstanceState)
{
super.onViewCreated(v, savedInstanceState);
final EditText editText = (EditText)v.findViewById(R.id.input);
// this line below is able to show the keyboard
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
Button add = (Button)v.findViewById(R.id.add_btn);
add.setOnClickListener(new …Run Code Online (Sandbox Code Playgroud) android android-softkeyboard android-dialogfragment dialogfragment
我有一个简单的应用程序,有 2 个编辑和一个按钮,问题是当我开始运行我的应用程序时,软键盘会自动出现,而我没有执行任何操作。我想当我点击Edittext时,会出现软键盘?谢谢你们
MainActivity.xml
<EditText
android:id="@+id/username"
android:hint="Email/Phone"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/password"
android:hint="Password"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn_login"
android:text="Login"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)
我读过一些帖子并做了这些事情,但它们只有在我单击按钮时才起作用:
InputMethodManager imm;
imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(username.getWindowToken(),0);
Run Code Online (Sandbox Code Playgroud) 我正在使用edittext和一个按钮创建一个应用程序.当我在edittext中输入内容然后单击一个按钮时,我想要键盘并专注于edittext消失,但我似乎无法做到.
我在XML中插入了这两行代码:
android:focusable="true"
android:focusableInTouchMode="true"
Run Code Online (Sandbox Code Playgroud)
我还尝试在按钮单击方法中添加它:
edittext.clearFocus();
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)
它只是不起作用,按下按钮后,键盘仍然在那里,edittext仍然有焦点.
我有一个ActionView带菜单项ActionBar(使用ActionBarSherlock),我可以在其中显示EditText一个搜索字段.这是一个Activity用CustomViewActionBar 启动另一个的输入,它显示相同的布局(我没有使用任何东西来强制它SoftKeyboard出现在第二个活动中,这里没有问题).当我想让第一个活动中的视图崩溃时软键盘自动显示/消失,我使用:
openKeyboard方法
mImm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
Run Code Online (Sandbox Code Playgroud)
closeKeyboard方法
mImm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
我使用它ActionExpandListener来使SoftKeyboard在View展开或折叠时出现或消失.通过以上两种方法,我得到了预期的结果.我在几个关于SO的问题上发现了这一点(特别是关闭/隐藏Android软键盘并在ActionBar上显示SearchView的软键盘或强制打开软键盘).
只是为了理解,当我使用SHOW_IMPLICIT或SHOW_FORCED单独使用时,它对较低版本没有影响(如2. +).EditText是专注的,但键盘没有出现(所以,你猜它是一件坏事).在最近的版本中(例如4. +),这是一个很好的效果,没有问题.然后,我强制键盘显示上面的openKeyboard方法.
现在,我遇到了一些麻烦...
在较低的版本中,我在键盘创建/销毁之前和之后得到了"空"空间,我可以忍受这个.但是在最近的版本中,当我返回第一个Activity时,我得到了"空"空间.而且它在不到一秒的时间就在这里,但足以看到它!
为了更好地了解会发生什么,请参见下图:
1.第二项活动:我按下向上主页按钮 - 键盘正常消失.
2.(返回)第一个活动:我的ListView被一个"空"空间覆盖(我的应用程序中的背景颜色).它消失了(这与SoftKeyboard的高度相同,毫无疑问!)
我想这是因为我强迫键盘出现在我的第一个活动中,虽然我在第二次活动时也强迫键盘隐藏,但是当我返回第一个活动时如何解决"空"空间?
摘要
1)活动=>按菜单中的项目>查看折叠>显示键盘>点击文本>发送>隐藏键盘>启动B活动.
2)B activity => setCustomView in actionbar>仅在编辑文本被聚焦/点击时显示键盘>点击文本>发送>隐藏键盘>刷新内容>按主页按钮>返回活动
3)活动=>"空"屏幕>屏幕消失.
任何帮助将非常感激.
谢谢你的时间.
编辑
我添加了我的第一堂课的代码,看看是否有人告诉我我做错了什么.也许这是我的代码问题.
菜单(ActionView)
ActionBar actionBar;
MenuItem …Run Code Online (Sandbox Code Playgroud) 当我从编辑文本中选择文本时,如何防止键盘打开?我希望里面的文字仍然可以选择,而当我点击它时不打开键盘
<EditText
android:id="@+id/displayalllinks"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:ems="10" >
Run Code Online (Sandbox Code Playgroud)