我在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
答案 0 :(得分:0)
您必须将背景设置为窗口而不是布局,以便不依赖于布局更改。实施例;
getActivity().getWindow().setBackgroundDrawableResource(yourBackgroundid);
在上面的某些设备中,代码不会像这样,所以你必须这样做。
getActivity().getWindow().getDecorView().findViewById(android.R.id.content).invalidate();
getActivity().getWindow().setBackgroundDrawableResource(yourBackgroundid);
答案 1 :(得分:0)
在Java代码中使用以下代码:
getActivity().getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.imagename));
在AndroidManifest.xml中,在您的活动中添加以下代码:
android:windowSoftInputMode="adjustResize"