键盘放置模糊了EditText想要保持可见的视图

时间:2015-11-03 17:22:02

标签: android android-edittext android-softkeyboard

我的活动基本上是一种很长的输入字段。 在每一行上,我想在每个EditText下面显示一个TextView作为提示文本,我希望TextView在用户输入数据时始终保持可见。不幸的是,软键盘模糊了提示文本,并始终将自己定位在EditText的正下方。当软键盘出现并且内容被调整(通过windowSoftInputMode = adjustResize | adjustPan)而没有用户滚动时,是否有任何技术允许EditText下面的TextView可见?

2 个答案:

答案 0 :(得分:2)

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
        }
   }

答案 1 :(得分:1)

修改 通过更深入地理解问题,我认为您应该在用户单击Edittext时以编程方式添加滚动。以下是执行此操作的代码:

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

根据我的个人经验,我认为没有这样做的方法。你可以做的是将提示textview放到右边的editext。或者在Edittext上使用提示占位符来使用现代方法:

在XML中,它只是android:hint="someText"

以编程方式,您可以使用edittext.setHint(int);

在上面的方法中传递R.string.somestring。