2014-03-04 29 views
0

我已经设置了windowSoftInput到adjustResize,但还没有键盘隐藏的TextInputAndroid的布局不滚动起来的时候软键可见

这是我的布局XML

<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/imageView1" 
    android:paddingBottom="25dp" 
    android:paddingLeft="35dp" 
    android:paddingRight="35dp" > 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="50dp" 
     android:layout_height="45dp" 
     android:src="@drawable/user" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="fill_parent" 
     android:layout_height="45dp" 
     android:layout_marginTop="0.4dp" 
     android:layout_weight="0.41" 
     android:background="@drawable/username_textbox" 
     android:ems="10" 
     android:minWidth="110dp" 
     android:paddingLeft="8dp" 
     android:singleLine="true" > 
    </EditText> 
</LinearLayout> 
<LinearLayout 
    android:id="@+id/linearLayout2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/linearLayout1" 
    android:paddingLeft="35dp" 
    android:paddingRight="35dp" > 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="50dp" 
     android:layout_height="45dp" 
     android:layout_gravity="center_horizontal" 
     android:src="@drawable/password_icon" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="fill_parent" 
     android:layout_height="45dp" 
     android:layout_marginTop="0.4dp" 
     android:background="@drawable/username_textbox" 
     android:ems="10" 
     android:minWidth="110dp" 
     android:paddingLeft="8dp" 
     android:singleLine="true" > 
    </EditText> 
</LinearLayout> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/linearLayout2" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="20dp" 
    android:background="@drawable/background_signin" 
    android:text="Login" 
    android:textColor="#ffffff" /> 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="175dp" 
    android:layout_height="207dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="85dp" 
    android:paddingBottom="20dp" 
    android:src="@drawable/app_logo" /> 

</RelativeLayout> 

default state

hides the edittext

回答

1

使用<activity android:windowSoftInputMode="adjustPan">而不是adjustResize

adjustResize,顾名思义,调整窗口的大小以为软键盘腾出空间,但在您的情况下有足够的空间。 adjustPan滚动窗口,使聚焦视图保持可见。

2

我用这样。它工作正常。

private int mSoftKeyboardHeight = 0; 



protected void scrollDownOnKeyboardPopUp() { 

    mScrollView.getViewTreeObserver().addOnGlobalLayoutListener(
      new ViewTreeObserver.OnGlobalLayoutListener() { 

       @Override 
       public void onGlobalLayout() { 
        int keyBoardHeight = 0; 
        if (keyBoardHeight <= 100) { 
         Rect r = new Rect(); 
         mScrollView.getWindowVisibleDisplayFrame(r); 

         int screenHeight = mScrollView.getRootView().getHeight(); 
         mSoftKeyboardHeight = screenHeight - (r.bottom - r.top); 
         int resourceId = getResources().getIdentifier("status_bar_height", 
           "dimen", "android"); 
         if (resourceId > 0) { 
          mSoftKeyboardHeight -= getResources().getDimensionPixelSize(
            resourceId); 
         } 
         if (mSoftKeyboardHeight > 100) { 
          keyBoardHeight = mSoftKeyboardHeight; 
         } 
         mScrollView.scrollTo(mScrollView.getScrollY(), mSoftKeyboardHeight 
           + mBottomFunctionPanel.getHeight() + mChatEditPanel.getHeight() 
           + mScrollView.getScrollY()); 
        } 
       } 
      }); 

} 

然后,你只需要调用它。

scrollDownOnKeyboardPopUp();