相关疑难解决方法(0)

如何检查Android中软件键盘的可见性?

我需要做一个非常简单的事情 - 找出是否显示了软件键盘.这在Android中可行吗?

android visibility android-softkeyboard

502
推荐指数
9
解决办法
26万
查看次数

如何检测软件键盘在Android设备上是否可见?

Android中是否有办法检测屏幕上是否显示软件(又称"软")键盘?

keyboard android

221
推荐指数
15
解决办法
24万
查看次数

如何通过编程方式关闭Android Soft KeyBoard?

我目前正在使用以下代码显示软键盘

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.

android android-softkeyboard

50
推荐指数
5
解决办法
9万
查看次数

在我使用适配器设置后,RecyclerView何时完成显示项目是否有回调?

背景

我已经创建了一个库,显示了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显示其子视图时收到通知,以便我可以根据当前显示的内容来决定显示/隐藏快速滚动条?

android scrollbar android-recyclerview fast-scroller

44
推荐指数
1
解决办法
2万
查看次数

无需任何键盘操作即可在活动上隐藏软键盘

我有一个标签视图,每个标签有一个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.关于如何解决这个问题的任何建议?

android

6
推荐指数
2
解决办法
2万
查看次数

EditText显示状态栏,或导致上面的内容移动而不是调整大小

背景

我有一个登录活动,它有一个这样的布局(垂直,从上到下):

  1. title(logo ImageView和TextView)
  2. 图像和viewPager占用屏幕的其余部分
  3. EditTexts和登录按钮显示在#2的顶部(覆盖其中的一部分),但位于屏幕的底部

我需要全屏显示此活动,隐藏状态栏,当出现软键盘时,请更改布局,以便显示上面显示的#3.

问题

似乎这些要求的组合很成问题.

我有两个主要问题:

  • 我为感测所显示的软键盘做了什么 - 虽然它在其他活动中运行良好,但似乎在这里不起作用.

  • 当软键盘出现时,它会重新显示状态栏,或者将内容移动到底部区域(#3)上方而不是调整大小,同时还将按钮隐藏在底部(#3)并仅显示EditText作为软键盘上方的第一个视图.

由于在显示/隐藏软键盘时无法真正拥有监听器,因此我必须创建一个自定义布局,告诉我其大小何时发生变化.当它的高度减小时,我假设键盘显示,反之亦然.

我试过的

  • 我尝试了多种布局变体.似乎没有帮助
  • 我已经使用这个布局作为片段的根,检查软键盘是否显示(因为它改变了它的大小):https: //stackoverflow.com/a/25895869/878126 可悲的是,它适用于所有其他除此之外的活动.
  • 我尝试了各种"windowSoftInputMode"值,包括"adjustResize"和"adjustPan"
  • 我认为问题是因为我使用透明导航栏,因此我已禁用它并且还禁用了"fitsSystemWindows"作为底部区域(#3).
  • 我试过这种方式来隐藏状态栏:

    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

4
推荐指数
1
解决办法
2651
查看次数

1
推荐指数
1
解决办法
2万
查看次数