全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android优雅的方式解决软键盘遮挡按钮问题

前言

比如在进行登录的操作中,用户输入完密码之后,肯定是想直接点击登录按钮的。返回键隐藏软键盘这样的体验肯定很糟糕,程序员,遇到问题解决问题。

实现1

xml

<ScrollView
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fadingEdge="none"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:src="@mipmap/ic_loginhead"/>
<EditText
android:id="@+id/et_usernamelogin_username"
style="@style/customEditText"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="10dp"
android:background="@null"
android:hint="请输入已验证手机"
android:inputType="number"
android:lines="1"
android:maxLength="11"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:background="@color/pating_line"/>
<EditText
android:id="@+id/et_usernamelogin_password"
style="@style/customEditText"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="20dp"
android:background="@null"
android:digits="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_?"
android:hint="请输入密码"
android:inputType="textPassword"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:background="@color/pating_line"/>
<Button
android:id="@+id/btn_usernamelogin_dologin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:layout_marginTop="30dp"
android:background="@drawable/btn_selecter"
android:enabled="false"
android:text="登录"
android:textColor="@color/white"
/>
</LinearLayout>
</ScrollView>

java

mScrollView=(ScrollView)view.findViewById(R.id.scrollview);
usernamelogin_username.setOnTouchListener(newView.OnTouchListener(){
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
changeScrollView();
returnfalse;
}
});
usernamelogin_password.setOnTouchListener(newView.OnTouchListener(){
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
changeScrollView();
returnfalse;
}
});
 /**
 *使ScrollView指向底部
 */
 privatevoidchangeScrollView(){
 newHandler().postDelayed(newRunnable(){
 @Override
 publicvoidrun(){
 mScrollView.scrollTo(0,mScrollView.getHeight());
 }
 },300);
 }

实现2

xml同上

anim下新建gone.xml

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"  
 android:fromXScale="1.0" 
 android:toXScale="0.0" 
 android:fromYScale="1.0" 
 android:toYScale="0.0" 
 android:pivotX="50%" 
 android:pivotY="50%" 
 android:duration="500" 
 android:repeatCount="0"/>

visiable.xml

<?xml version="1.0" encoding="utf-8"?>
 <scale xmlns:android="http://schemas.android.com/apk/res/android" 
 android:fromXScale="0.0" 
 android:toXScale="1.0" 
 android:fromYScale="0.0" 
 android:toYScale="1.0" 
 android:pivotX="50%" 
 android:pivotY="50%" 
 android:duration="500" 
 android:repeatCount="0"/>

或者直接在代码中

importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.support.v7.app.AppCompatActivity;
importandroid.view.KeyEvent;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.view.animation.Animation;
importandroid.view.animation.AnimationSet;
importandroid.view.animation.ScaleAnimation;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.ImageView;
publicclassMainActivityextendsAppCompatActivity{
privateImageViewmHead;//头部ImageView
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mHead=(ImageView)findViewById(R.id.iv_head);
finalButtonbtn=(Button)findViewById(R.id.btn_usernamelogin_dologin);
finalEditTextet_pass=(EditText)findViewById(R.id.et_usernamelogin_password);
finalEditTextet_name=(EditText)findViewById(R.id.et_usernamelogin_username);
/**
*当输入被点击
*/
et_name.setOnTouchListener(newView.OnTouchListener(){
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
start();
returnfalse;
}
});
btn.setEnabled(false);
btn.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
}
});
}
privatevoidstart(){
AnimationSetanimationSet=newAnimationSet(true);
ScaleAnimationscaleAnimation=newScaleAnimation(
1,0.1f,1,0.1f,
Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
scaleAnimation.setDuration(500);
animationSet.addAnimation(scaleAnimation);
animationSet.setFillAfter(true);
animationSet.setFillBefore(false);
animationSet.setRepeatCount(0);//设置重复次数
mHead.startAnimation(scaleAnimation);
newHandler().postDelayed(newRunnable(){
@Override
publicvoidrun(){
mHead.setVisibility(View.GONE);
}
},500);
}
/**
*菜单、返回键响应
*/
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
//TODOAuto-generatedmethodstub
if(keyCode==KeyEvent.KEYCODE_BACK){
if(mHead.getVisibility()==View.GONE){
AnimationSetanimationSet=newAnimationSet(true);
ScaleAnimationscaleAnimation=newScaleAnimation(
0.1f,1f,0.1f,1f,
Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
scaleAnimation.setDuration(500);
animationSet.addAnimation(scaleAnimation);
animationSet.setFillAfter(true);
animationSet.setFillBefore(false);
mHead.startAnimation(scaleAnimation);
mHead.setVisibility(View.VISIBLE);
}else{
finish();
}
}
returnfalse;
 }
}

效果呢:

 

以上所述是小编给大家介绍的Android优雅的方式解决软键盘遮挡按钮问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# android  # 软键盘遮挡按钮  # Android开发之WebView输入框提示解决办法  # Android开发软键盘遮挡登陆按钮的完美解决方案  # Android软键盘遮挡的四种完美解决方案  # Android WebView软键盘遮挡输入框方案详解  # 请输入  # 小编  # 在此  # 给大家  # 解决问题  # 如在  # 所述  # 给我留言  # 感谢大家  # 直接点击  # 很糟糕  # 疑问请  # 有任何  # digits  # et_usernamelogin_password  # drawable  # btn_usernamelogin_dologin  # textPassword  # Button  # pating_line 


相关文章: 如何快速搭建高效服务器建站系统?  青岛网站建设如何选择本地服务器?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  ,柠檬视频怎样兑换vip?  如何快速建站并高效导出源代码?  如何快速搭建自助建站会员专属系统?  在线制作视频网站免费,都有哪些好的动漫网站?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  XML的“混合内容”是什么 怎么用DTD或XSD定义  太平洋网站制作公司,网络用语太平洋是什么意思?  小型网站制作HTML,*游戏网站怎么搭建?  专业商城网站制作公司有哪些,pi商城官网是哪个?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  如何用腾讯建站主机快速创建免费网站?  C++如何使用std::optional?(处理可选值)  建站VPS选购需注意哪些关键参数?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  如何在建站主机中优化服务器配置?  怀化网站制作公司,怀化新生儿上户网上办理流程?  制作门户网站的参考文献在哪,小说网站怎么建立?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  实例解析Array和String方法  建站之星如何一键生成手机站?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  建站主机核心功能解析:服务器选择与网站搭建流程指南  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  C#怎么使用委托和事件 C# delegate与event编程方法  如何在建站宝盒中设置产品搜索功能?  建站之星伪静态规则如何正确配置?  javascript中对象的定义、使用以及对象和原型链操作小结  建站之星如何配置系统实现高效建站?  如何在服务器上三步完成建站并提升流量?  ,在苏州找工作,上哪个网站比较好?  平台云上自助建站如何快速打造专业网站?  网站制作软件有哪些,制图软件有哪些?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  建站之星安装步骤有哪些常见问题?  如何在IIS管理器中快速创建并配置网站?  香港服务器租用每月最低只需15元?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  建站之星北京办公室:智能建站系统与小程序生成方案解析  黑客入侵网站服务器的常见手法有哪些?  如何在新浪SAE免费搭建个人博客?  如何在腾讯云免费申请建站?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  网站制作公司排行榜,四大门户网站排名?  如何快速搭建个人网站并优化SEO? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。