Android开发软键盘遮挡登陆按钮的完美解决方案
程序员文章站
2024-03-05 11:19:18
在应用登陆页面我们需要填写用户名和密码。当填写这些信息的时候,软键盘会遮挡登陆按钮,这使得用户体验较差,所以今天就来解决这个问题
1:登陆布局界面如下
<...
在应用登陆页面我们需要填写用户名和密码。当填写这些信息的时候,软键盘会遮挡登陆按钮,这使得用户体验较差,所以今天就来解决这个问题
1:登陆布局界面如下
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/login_bg" > <linearlayout android:id="@+id/ll_center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <scrollview android:id="@+id/sl_center" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" android:fadingedge="none" android:scrollbars="none" > <relativelayout android:id="@+id/rl_center" android:layout_width="fill_parent" android:layout_height="wrap_content" > <linearlayout android:id="@+id/sms_login_ll_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_margintop="90dip" android:orientation="horizontal" > <imageview android:id="@+id/sms_login_iv_icon" android:layout_width="70dip" android:layout_height="70dip" android:layout_gravity="center_vertical" android:src="@drawable/login_top_icon" /> <imageview android:id="@+id/sms_login_iv_big_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginleft="15dip" android:src="@drawable/sms_login_icon_big" /> </linearlayout> <imageview android:id="@+id/sms_login_iv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/sms_login_ll_title" android:layout_centerhorizontal="true" android:layout_margintop="28dip" android:background="@drawable/sms_login_icon_small" /> <relativelayout android:id="@+id/sms_login_rl_input_name" android:layout_width="fill_parent" android:layout_height="43dip" android:layout_below="@id/sms_login_iv_name" android:layout_centerhorizontal="true" android:layout_marginleft="40dip" android:layout_marginright="40dip" android:layout_margintop="40dip" android:background="@drawable/login_top_input" > <imageview android:id="@+id/sms_login_iv_input_name_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_centervertical="true" android:layout_marginleft="10dip" android:layout_marginright="10dip" android:background="@drawable/login_input_icon_user" /> <framelayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centervertical="true" android:layout_torightof="@id/sms_login_iv_input_name_icon" > <edittext android:id="@+id/sms_login_et_accout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/transparent_white" android:digits="@string/sms_login_accout_text" android:hint="请输入账号" android:singleline="true" android:text="" android:textsize="20sp" /> </framelayout> </relativelayout> <relativelayout android:id="@+id/sms_login_rl_input_pass" android:layout_width="fill_parent" android:layout_height="43dip" android:layout_below="@id/sms_login_rl_input_name" android:layout_centerhorizontal="true" android:layout_marginleft="40dip" android:layout_marginright="40dip" android:background="@drawable/login_top_input" > <imageview android:id="@+id/sms_login_iv_input_pass_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_centervertical="true" android:layout_marginleft="10dip" android:layout_marginright="10dip" android:background="@drawable/login_input_icon_pwd" /> <framelayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centervertical="true" android:layout_torightof="@id/sms_login_iv_input_pass_icon" > <edittext android:id="@+id/sms_login_et_password" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/transparent_white" android:digits="@string/sms_et_change_password_old_text" android:hint="请输入密码" android:inputtype="textpassword" android:singleline="true" android:text="" android:textsize="20sp" /> </framelayout> </relativelayout> </relativelayout> </scrollview> <button android:id="@+id/sms_login_bt_confirm" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/sms_login_rl_input_pass" android:layout_centerhorizontal="true" android:layout_marginleft="40dip" android:layout_marginright="40dip" android:layout_margintop="16dip" android:background="@drawable/sms_update_pass_bg_selector" android:text="登 录" android:textcolor="@color/white" android:textsize="20sp" /> </linearlayout> </relativelayout>
需要注意的是:
1:层级关系
relativelayout-----
linearlayout----
scrollview,
button
2:在androidmanifest.xml中的该activity配置 android:windowsoftinputmode="statehidden|adjustresize"
3:看如下代码
etaccount = (edittext) this.findviewbyid(r.id.sms_login_et_accout); etaccount.setonclicklistener(this); etaccount.setontouchlistener(new ontouchlistener() { @override public boolean ontouch(view v, motionevent event) { changescrollview(); return false; } }); /** * 使scrollview指向底部 */ private void changescrollview(){ h.postdelayed(new runnable() { @override public void run() { sl_center.scrollto(0, sl_center.getheight()); } }, 300); } handler h = new handler(){ public void handlemessage(message msg) { }; };
以上所述是小编给大家介绍的android开发软键盘遮挡登陆按钮的完美解决方案,希望对大家有所帮助
上一篇: iis配置asp.net常见问题解决方案