键盘打开时背景图片向上滑动

问题描述 投票:0回答:3

我在 Android 中构建登录页面时遇到问题。我想将用户名和登录名保留在布局的底部。但是,当输入用户名/密码时,键盘会弹出,并且我的背景图像也会随之滑动。我希望我的背景图像应该是静态的,只有我的登录布局应该在键盘弹出时向上滑动。我在活动内添加了带有登录布局的片段,并在活动布局中添加了背景图像。

这是我的片段和活动布局代码:

fragment_login.xml

<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" android:gravity="center_horizontal">

  <RelativeLayout android:id="@+id/login_form" android:layout_width="match_parent" android:layout_height="match_parent">

    <LinearLayout android:id="@+id/username_login_form" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="vertical">

      <com.test.views.CustomEditText android:id="@+id/usernameview" android:layout_width="@dimen/login_edittext_width" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="12dp" android:gravity="center_horizontal"
      android:hint="@string/prompt_username" android:imeOptions="actionNext" android:inputType="text|textPersonName|textFilter|textNoSuggestions" android:maxLines="1" android:padding="16dp" android:paddingLeft="5dip" android:scrollHorizontally="true"
      android:singleLine="true" android:textColor="@android:color/white" android:textColorHint="@android:color/white" android:textSize="16sp" />


      <com.test.views.CustomEditText android:id="@+id/password" android:layout_width="@dimen/login_edittext_width" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="8dp" android:gravity="center_horizontal"
      android:hint="@string/prompt_password" android:imeOptions="actionNext" android:inputType="textPassword" android:maxLines="1" android:padding="16dp" android:singleLine="true" android:textColor="@android:color/white" android:textColorHint="@android:color/white"
      android:textSize="16sp" />


      <Button android:id="@+id/sign_in_button" android:layout_width="@dimen/login_button_width" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margin="8dp" android:background="@drawable/blue_btn_selector" android:imeOptions="actionDone"
      android:paddingLeft="26dp" android:paddingRight="26dp" android:text="@string/sign_in" android:textColor="@android:color/white" android:textSize="@dimen/signin_button_textsize" android:textStyle="bold" />

      <TextView android:id="@+id/forgot_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="@string/forgot_password" android:textColor="@android:color/white" android:textSize="14sp"
      android:textStyle="bold" />

    </LinearLayout>

    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/username_login_form" android:layout_centerHorizontal="true" android:layout_marginBottom="25dp" android:text="text" android:textColor="@android:color/white"
    android:textSize="42sp" />
  </RelativeLayout>

  <!-- Login progress -->
  <ProgressBar android:id="@+id/login_progress" style="?android:attr/progressBarStyleLargeInverse" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_marginBottom="8dp" android:visibility="gone"
  />

</RelativeLayout>

<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" android:background="@mipmap/login_background" android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.test.activity.LoginActivity">

  <FrameLayout android:id="@+id/fragment_layout" android:layout_width="match_parent" android:layout_height="match_parent" />

</RelativeLayout>

Background image sliding upwards when keyboard pops up

Background image should be static always and it should not slide upwards when keyboard pops up

android android-layout android-fragments android-activity
3个回答
0
投票

您必须将背景设置为窗口而不是布局,以便它不依赖于布局更改。示例;

        getActivity().getWindow().setBackgroundDrawableResource(yourBackgroundid);

在某些设备上,上面的代码不会起作用,所以你必须这样做。

        getActivity().getWindow().getDecorView().findViewById(android.R.id.content).invalidate();
        getActivity().getWindow().setBackgroundDrawableResource(yourBackgroundid);

0
投票

在 Java 代码中使用以下代码:

getActivity().getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.imagename));

并在 AndroidManifest.xml 中添加以下代码到您的活动中:

android:windowSoftInputMode="adjustResize"

0
投票

对我来说,只有下面的代码解决了问题,关闭了监听器键盘:

ScrollView myScroll = findViewById(R.id.scroll1a); myScroll.requestLayout();

© www.soinside.com 2019 - 2024. All rights reserved.