Keyboard placement obscures view below EditText would like to keep visible

I have an activity that is basically a long form of entry fields. On each row, I want to show a TextView to serve as hint text just below each EditText and I want the TextView to remain visible at all times when the user is entering data. Unfortunately, the soft keyboard obscures the hint text and always positions itself immediately below the EditText. Is there any technique that will allow the TextView below the EditText to also be visible when the soft keyboard appears and the contents are adjusted (via windowSoftInputMode=adjustResize|adjustPan), without having the user scroll ?


EDIT: By understanding the problem more deeply, I think that you should add scroll programatically when user clicks on the Edittext. Here is the code to do that:

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

From my personal experience I think there is not such way to do that. The thing you can do is place the hint textview toRightOf the editext. Or Use modern Approach by using a Hint Placeholder on Edittext:

In XML, it's simply android:hint="someText"

Programatically you can use edittext.setHint(int);

pass R.string.somestring in above method.


Vishavjeet got me on the right track in suggesting I scrolldown to reveal the view that may be overlapped by the keyboard. Below is a function similar to what I used to solve the problem. It can be called when the EditText above the TextView receives focus:

    //       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
        }
   }
链接地址: http://www.djcxy.com/p/93030.html

上一篇: Android:键盘输入添加新的textview

下一篇: 键盘放置掩盖了EditText下方的视图想要保持可见