我需要做一个非常简单的事情 - 找出是否显示了软件键盘.这在Android中可行吗?
我目前正在使用以下代码显示软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN);
Run Code Online (Sandbox Code Playgroud)
在这里我没有用Edittext绑定软键盘,因为我使用了上面的代码.
现在我想关闭SoftKeyboard,所以我目前正在使用下面的代码,但它无法正常工作.
imm.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.RESULT_HIDDEN);
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我使用什么来关闭softKeyboard?
基于下面的答案,我想让你清楚我没有使用EditText,我使用Layout来显示键盘和隐藏键盘.我想将键盘键事件发送到我没有使用editText的远程区域bcoz.
我已经创建了一个库,显示了RecyclerView的快速滚动条(这里,如果有人想要),我想决定何时显示以及何时隐藏快速滚动条.
我认为一个好的决定是,如果屏幕上没有显示的项目(或者有很多项目没有出现),在RecyclerView完成布局过程后,我会将快速滚动条设置为可见,如果所有项目都已显示,则无需显示.
我找不到RecyclerView的监听器/回调,告诉我它何时完成显示项目,以便我可以检查显示的项目数与项目数量相比.
在键盘出现时,recyclerView也可能会改变其大小并隐藏自己.
滚动侦听器可能没有帮助,因为它"一直"发生,我只需要检查RecyclerView何时更改其大小或项目计数(或数据)已更改.
我可以换用通知我的大小的变化,就像一个布局RecyclerView 这一个,我做了,但我不认为它会工作作为RecyclerView大概不会准备好,告诉多少项目都可见.
检查显示的项目数量的方法可以这样使用:
final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(layoutManager);
...
Log.d("AppLog", "visible items count:" + (layoutManager.findLastVisibleItemPosition() -layoutManager.findFirstVisibleItemPosition()+1));
Run Code Online (Sandbox Code Playgroud)
如何在recyclerView显示其子视图时收到通知,以便我可以根据当前显示的内容来决定显示/隐藏快速滚动条?
我有一个标签视图,每个标签有一个Activity,当我从第一个带有TextView的标签切换到第二个标签时,它只显示一个可点击的列表,软键盘仍然存在.我希望它消失,所以我尝试了这个:
public static void hideSoftKeyboard (Activity activity, View view) {
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为没有相关的视图提供,因为屏幕上没有带键盘输入的View.关于如何解决这个问题的任何建议?
我有一个登录活动,它有一个这样的布局(垂直,从上到下):
我需要全屏显示此活动,隐藏状态栏,当出现软键盘时,请更改布局,以便显示上面显示的#3.
似乎这些要求的组合很成问题.
我有两个主要问题:
我为感测所显示的软键盘做了什么 - 虽然它在其他活动中运行良好,但似乎在这里不起作用.
当软键盘出现时,它会重新显示状态栏,或者将内容移动到底部区域(#3)上方而不是调整大小,同时还将按钮隐藏在底部(#3)并仅显示EditText作为软键盘上方的第一个视图.
由于在显示/隐藏软键盘时无法真正拥有监听器,因此我必须创建一个自定义布局,告诉我其大小何时发生变化.当它的高度减小时,我假设键盘显示,反之亦然.
我试过这种方式来隐藏状态栏:
requestWindowFeature(Window.FEATURE_NO_TITLE);
Run Code Online (Sandbox Code Playgroud)
而这样:
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
} else
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)这是当前布局的简短描述:
<LayoutSizeChangedSensorFrameLayout>
<RelativeLayout>
#1
<LinearLayout vertical, aligned to parent-top>
<ImageView/>
<TextView/>
<CirclePageIndicator/>
</LinearLayout>
#2
<ImageView aligned to parent-bottom, and below #1 />
<ViewPager aligned to the ImageView from all sides/>
#3
<LinearLayout vertical, aligned to …
Run Code Online (Sandbox Code Playgroud) android android-layout android-softkeyboard android-statusbar
可能重复:
Android:如何判断软键盘是否显示?
如何检测软键盘是否在屏幕上显示在android中?