android - 键盘放置遮挡了下方的 View EditText 希望保持可见

标签 android android-edittext android-softkeyboard

我的 Activity 基本上是一个很长的输入字段。 在每一行上,我想在每个 EditText 下方显示一个 TextView 作为提示文本,并且我希望 TextView 在用户输入数据时始终保持可见。不幸的是,软键盘遮盖了提示文本并始终将其自身定位在 EditText 的正下方。有没有什么技术可以让 EditText 下面的 TextView 在出现软键盘并调整内容(通过 windowSoftInputMode=adjustResize|adjustPan)时也可见,而无需用户滚动?

最佳答案

Vishavjeet 让我走上了正确的轨道,建议我向下滚动以显示可能被键盘重叠的 View 。下面是一个类似于我用来解决问题的功能。当 TextView 上方的 EditText 获得焦点时可以调用它:

    //       View targetView; // View that may be hidden by keyboard
    //       ScrollView scrollContainerView; // Scrollview containing hiddenView
    //
    void assureViewVisible (View targetView, ScrollView, scrollContainerView) {        
        Window rootWindow = activity.getWindow();
        Rect rMyView = new Rect();
        View rootview = rootWindow.getDecorView();
        rootview.getWindowVisibleDisplayFrame(rMyView); // Area not taken up by keyboard

        int subTextPos[] = new int[2];
        targetView.getLocationInWindow(subTextPos); // Get position of targetView
        int subTextHt = targetView.getHeight();     // Get bottom of target view

        if ((subTextPos[1]+subTextHt) > rMyView.bottom) { // Is targetView at all obscured?
           int scrollBy = (subTextPos[1]+subTextHt) - rMyView.bottom + 10; // add a small bottom margin
           mMeasurementViewScrollView.smoothScrollBy(0, scrollBy); // Scroll to subtext
        }
   }

关于android - 键盘放置遮挡了下方的 View EditText 希望保持可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33505374/

相关文章:

android - 拉伸(stretch) GridView

android - 如何在对话框显示时隐藏键盘?

java - 将文本设置为edittext(异常(exception))

java - 当用户尝试插入超过最大限制的文本时如何制作 toast ?

java - Android:创建 Intent 后,我无法从 MainActivity 打开 UI

android - 操作输入法设置后返回 Activity

android - 如何在android中的键盘上方添加保存和取消按钮

android - 如何在 opengl Android 中进行对象检测?

android - 将变量发送到 REST api 以保存在服务器上

android - Mediaplayer 准备显示非法状态异常