这个问题可能类似于this和this,但它们并没有解决我的问题。我有一个登录UI,如下所示:
当我点击用户名字段时,它会变成这样:
正如您在此处所见,软键盘覆盖了密码字段,输入用户名后,您必须先关闭软键盘,然后单击密码字段以输入密码,这不是用户友好的。如何避免软键盘覆盖密码字段,以便用户可以直接输入密码。以下是此UI的布局。
<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: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="eda397.group10.navigator.MainActivity$PlaceholderFragment" >
<ImageView
android:id="@+id/logo"
android:layout_width="125dp"
android:layout_height="125dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginTop="24dp"
android:src="@drawable/ic_launcher" />
<Button
android:id="@+id/register_button"
android:layout_width="85dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/login_username"
android:layout_marginBottom="65dp"
style="@style/CustomStyleButton"
android:text="@string/button_register" />
<EditText
android:id="@+id/login_username"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_alignLeft="@+id/login_password"
android:layout_alignRight="@+id/login_password"
android:layout_centerVertical="true"
android:background="#d8d8d8"
android:ems="10"
android:hint="@string/username_message" >
</EditText>
<EditText
android:id="@+id/login_password"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_below="@+id/login_username"
android:layout_centerHorizontal="true"
android:layout_marginTop="17dp"
android:background="#d8d8d8"
android:ems="10"
android:hint="@string/password_message"
android:inputType="textPassword" />
<Button
android:id="@+id/login_button"
android:layout_width="85dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/register_button"
android:layout_alignBottom="@+id/register_button"
android:layout_alignLeft="@+id/login_username"
style="@style/CustomStyleButton"
android:text="@string/button_send" />
</RelativeLayout>
答案 0 :(得分:0)
在您的AndroidManifest.xml中,在您的活动声明中,您需要设置windowSoftInputMode
,如下所示:
<activity
android:name="..."
android:windowSoftInputMode="adjustResize">
</activity>
此解决方案可能无法正常使用相对布局。您可以考虑更改为线性布局并使用windowSoftInputMode
,或者您可以尝试更改布局重力:
<RelativeLayout
...
android:layout_gravity="bottom" >
答案 1 :(得分:0)
如果您只是想让用户轻松从“用户名”到“密码”字段,您可以将imeOptions添加到login_username:
<EditText
android:id="@+id/login_username"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_alignLeft="@+id/login_password"
android:layout_alignRight="@+id/login_password"
android:layout_centerVertical="true"
android:background="#d8d8d8"
android:ems="10"
android:hint="@string/username_message"
android:imeOptions="actionNext" >
这不会改变屏幕上的键盘,但是如果你想解决这个问题,那么你在问题中提到的答案应该已经足够了。