【问题标题】:push only scrollview while keyboard open android在键盘打开android时仅推送滚动视图
【发布时间】:2017-07-19 14:17:42
【问题描述】:

嗨,我有一个包含 3 个视图的活动

-RelativeLayout
---TextView                 1)
---ScrollView               2)
-----FrameLayout
---------ListView
---------EditText -----------> When I click over here (2) view only pushup
---TextView                 3)

我只想要 2) 这是滚动视图应该在键盘打开时向上推,但现在它也推 TextView 3)

我已经在清单中尝试过

android:windowSoftInputMode="adjustNothing"
or
android:windowSoftInputMode="adjustResize" 
or
android:windowSoftInputMode="adjustPan" 

但什么也没发生,3) textview 也用 2) Scrollview 推送

【问题讨论】:

  • 嘿!我有同样的问题。你找到解决方案了吗?
  • @Apurva no bro 仍然没有:(如果您找到任何解决方案,请告诉我
  • 如何在 FrameLayout 中有两个视图?我认为 FrameLayout 只能容纳一个视图。
  • 你能把3)和底部对齐吗?
  • 你试过这个stackoverflow.com/a/8103047/903469 吗?

标签: android


【解决方案1】:

打开软键盘会减少可用的屏幕空间,但不会改变 TextView 3) 位于屏幕底部的事实。

那么,如果我理解正确,您不想在打开键盘时显示 TextView 3)?

如果是这样,您可以尝试使用此方法here 来捕获软键盘的显示/隐藏并显示/隐藏 Textview。

编辑 也可以尝试在滚动视图上使用android:isScrollContainer="false" 和android:windowSoftInputMode="adjustNothing" 或android:windowSoftInputMode="adjustPan"

【讨论】:

  • 应该是,虽然它可能取决于目标 api(我自己没有在较新的 api 上测试过),但自己测试并不难:)
【解决方案2】:

您可以做的是检测键盘是否显示隐藏文本视图而 id 不显示它

这是一段代码

_Your_Text_View.getViewTreeObserver().addOnGlobalLayoutListener(
            new OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    Rect r = new Rect();
                    // r will be populated with the coordinates of your view
                    // that area still visible.
                    activityRootView.getWindowVisibleDisplayFrame(r);
                    heightDiff = activityRootView.getRootView()
                                .getHeight() - (r.bottom - r.top);


                if (heightDiff > 100) { // if more than100 pixels, its
                            // probably a keyboard...

                    //here hide your TextView
                }else{

                         //here Show your TextView
                }
            });

在你的清单中也写那段代码

android:windowSoftInputMode="stateHidden|adjustPan"

【讨论】:

  • @SiddhpuraAmit 没问题,,:)
【解决方案3】:

伙计们,我遇到了同样的问题,并通过一个非常方便和最简单的解决方案获得了庇护,该解决方案涉及将一个属性放在您的 Scrollview 标记中驻留在您的 xml 文件中。那是

android:isScrollContainer="false"

这可以防止底部布局坐在键盘上。希望能解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2020-12-06
    相关资源
    最近更新 更多