2014-03-04 2 views
0

Я поставил windowSoftInput в adjustResize, но все же клавиатура скрывает TextInputандроид макет не прокручивается, когда клавиша видна

это мой макет 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(); 
Смежные вопросы