当前位置: 移动技术网 > 移动技术>移动开发>Android > Android开发软键盘遮挡登陆按钮的完美解决方案

Android开发软键盘遮挡登陆按钮的完美解决方案

2019年07月24日  | 移动技术网移动技术  | 我要评论

在应用登陆页面我们需要填写用户名和密码。当填写这些信息的时候,软键盘会遮挡登陆按钮,这使得用户体验较差,所以今天就来解决这个问题

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开发软键盘遮挡登陆按钮的完美解决方案,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网