当前位置: 首页 > 知识库问答 >
问题:

键盘位置模糊了EditText希望保持可见的视图

马才
2023-03-14

我有一个基本上是长形式的输入字段的活动。在每一行上,我想在每个EditText下方显示一个TextView作为提示文本,并且我希望TextView在用户输入数据时始终保持可见。不幸的是,软键盘遮住了提示文本,并且总是将自己定位在EditText的正下方。是否有任何技术可以允许EditText下方的TextView在软键盘出现并调整内容时也可见(通过windowSoftInputMode=调整调整大小|调整潘),而无需用户滚动?

共有2个答案

鄢飞鸾
2023-03-14

编辑:通过更深入地理解这个问题,我认为你应该在用户点击编辑文本时有计划地添加滚动。下面是实现这一点的代码:

private final void focusOnView()
{ 
 new Handler().post(new Runnable() 
 { 
 @Override
 public void run() 
 { 
 your_scrollview.scrollTo(0, your_EditBox.getBottom()); 
 }}); 
 }

根据我个人的经验,我认为没有这样的方法。您可以做的是将提示文本视图放置在编辑文本的右侧。或者使用现代方法,在Edittext上使用提示占位符:

在XML中,它只是android: hint="有些文本"

通过编程,您可以使用< code > edittext . set hint(int);

通过上述方法R.string.somestring。

谯乐池
2023-03-14

Vishavjeet建议我向下滚动以显示可能被键盘重叠的视图,这让我找到了正确的方向。下面是一个类似我用来解题的函数。当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
        }
   }
 类似资料:
  • 我有一个布局,即MotionLayout,它必须为我定义了motionscene约束集开始和结束的FrameLayouts。并且它们是正确的动画。 然后,在这个动画框架布局下,我添加了两个文本视图,在单击时,我尝试隐藏一个,显示另一个,但两个都保持可见 重写有趣的onViewCreated(View:View,SavedInstanceState:Bundle?){super.onviewcrea

  • 我在android studio中创建了一个简单的聊天应用程序。最初,当我发送文本时,recycle view的最后一项总是在焦点上,但当我隐藏软键盘,然后再次单击editext以发送消息时,recycle view的最后一项不在焦点上。当软键盘处于焦点时,我需要向下滚动才能看到最后一条消息。下面是布局和主要活动代码: 以下是我的聊天应用程序的布局: 我已经使用了smoothScrollToPos

  • 我已经谷歌了很多,但找不到一个令人满意的解决方案。下面的截图描述了我所面临的问题。 软键盘可见时,编辑文本隐藏在标题栏后面。我已经把 主布局中的属性。如果删除此属性,则布局工作正常。但设计需求需要表单位于中心。我什么都试过了。尝试使用scrollview并将其放入清单 也尝试过“adjustPan”,它确实有效。但是在这种情况下,整个表单不会被推上去,编辑文本“MobileNo”和按钮隐藏在软键盘

  • 我们正在做一个类似Whatsapp的应用程序,所以我们展示了一个表情面板或软键盘。我们正在使用adjustResize,因为我们需要获得软键盘的高度(为了确保表情面板与软键盘具有相同的高度),一切都正常,但是,当从表情面板更改为键盘时,我们看到edittext如何到达底部,然后随着软键盘上升。 在显示软键盘时,如何修复edittext?在显示键盘之前,我曾考虑过从adjustResize更改为ad

  • 我有带有edittext字段的自定义模板。当我点击软键盘上的“下一步”按钮时,它只移动了两次焦点--比按钮变成了“确定”。清单有12项。有没有办法导航到所有的项目,而不仅仅是2?你能帮帮我吗? 公共视图getView(int position,View convertView,ViewGroup parent){ }

  • 我有一些奇怪的影响,当试图动画视图从消失到可见。见附件gif。 我有一个简单的,它切换的可见性。当更改为可见时,上会出现不希望的类似动画的影响。 我认为这与布局高度有关。请参见下面的布局。 当我删除,并将布局高度更改为时,它工作正常。但这不是解决方案,因为我最终需要一个。 如何避免按钮动画效果? 源代码: