显示软键盘时向上滑动视图

时间:2014-04-04 16:43:57

标签: java android

我想在出现软键盘时滑动表单视图。 我发现这并不像我想象的那么容易,我试图将活动的windowSoftInputMode更改为adjustPan而它什么都不做,然后我尝试将其更改为adjustResize并且它只是调整了按钮的高度。

我想要的结果示例:

Soft keyboard is hidden

当用户点击其中一个“编辑文本”视图时,我希望这些视图向上滑动:

Soft keyboard is visible

修改:这是我的布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.invity.Login"
android:background="#5dc8fc"
android:id="@+id/rlLogin">

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" 
android:background="#5dc8fc"
style="@style/AppBaseThemeNoTitle" >

    <ImageView
        android:id="@+id/imgBG1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:scaleType="matrix"
        android:src="@drawable/BG1" />

    <ImageView
        android:id="@+id/imgBG2"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:layout_alignParentBottom="true"
        android:scaleType="centerCrop"
        android:src="@drawable/BG2" />

</RelativeLayout>

<ImageView
    android:id="@+id/imgLogo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="190dp"
    android:src="@drawable/logo_white"
    android:fitsSystemWindows="true" />

<EditText
    android:id="@+id/txtEmail"
    android:layout_width="350dp"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:hint="@string/app_login_Email_Hint"
    android:layout_below="@+id/imgLogo"
    android:layout_marginTop="16dp"
    android:layout_marginBottom="5dp"
    android:paddingLeft="3dp"
    android:ems="15"
    android:inputType="textEmailAddress"
    android:background="@drawable/edittext_style"
    android:gravity="center"
    android:singleLine="true"
    android:textDirection="ltr"
    android:textColor="#58c9f3"
    android:fitsSystemWindows="true">

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/txtPassword"
    android:layout_width="350dp"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:hint="@string/app_login_Password_Hint"
    android:layout_below="@+id/txtEmail"
    android:layout_marginBottom="5dp"
    android:paddingLeft="3dp"
    android:ems="15"
    android:inputType="textPassword"
    android:background="@drawable/edittext_style"
    android:gravity="center"
    android:singleLine="true"
    android:textDirection="ltr"
    android:textColor="#58c9f3"
    android:fitsSystemWindows="true"/>

<Button
    android:id="@+id/btnConnect"
    android:layout_width="350dp"
    android:layout_height="55dp"
    android:layout_centerHorizontal="true"
    android:layout_alignLeft="@+id/txtPassword"
    android:layout_alignRight="@+id/txtPassword"
    android:layout_below="@+id/txtPassword"
    android:text="@string/app_login_btn"
    android:onClick="btnLoginClick"
    android:background="@drawable/button_style"
    android:textColor="#FFFFFF"
    android:textSize="20sp"
    android:fitsSystemWindows="true"/>

</RelativeLayout>

我有两个将背景组合在一起的ImageView。

1 个答案:

答案 0 :(得分:-1)

你需要requestFocus();

如果您无法请求焦点,您可以使用

(!EditText.hasFocus()){
//do nothing}
else{EditText.requestFocus();}

在某种更新方法中