欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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