解决弹出软键盘遮挡按钮影响用户体验
来源:互联网 发布:休闲鞋推荐 知乎 编辑:程序博客网 时间:2024/06/16 20:16
前言
比如在进行登录的操作中,用户输入完密码之后,肯定是想直接点击登录按钮的。返回键隐藏软键盘这样的体验肯定很糟糕,程序员,遇到问题解决问题。
实现一:
布局文件
<span style="font-weight: normal;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical"> <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></LinearLayout></span>
在java中
<span style="font-weight: normal;"> mScrollView = (ScrollView) view.findViewById(R.id.scrollview); usernamelogin_username.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { changeScrollView(); return false; } }); usernamelogin_password.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { changeScrollView(); return false; } });</span>
<span style="font-weight: normal;"> /** * 使ScrollView指向底部 */ private void changeScrollView() { new Handler().postDelayed(new Runnable() { @Override public void run() { mScrollView.scrollTo(0, mScrollView.getHeight()); } }, 300); }</span>
看效果
实现二:
这个效果是看了别人的应用有感而发,既解决问题,又加了一丝丝炫酷。
布局文件
<span style="font-weight: normal;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <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="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/iv_head" 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" 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="16"/> <ImageView android:layout_width="match_parent" android:layout_height="2px" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" /> <EditText android:id="@+id/et_usernamelogin_password" android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginTop="20dp" android:background="@null" android:digits="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_?" android:hint="请输入密码" android:inputType="textPassword"/> <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/selecter" android:enabled="true" android:text="登录" /> </LinearLayout> </ScrollView></LinearLayout></span>
java代码
<span style="font-weight: normal;">package com.meike.myapplication;import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationSet;import android.view.animation.ScaleAnimation;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;public class MainActivity extends AppCompatActivity { private ImageView mHead; //头部ImageView @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mHead = (ImageView) findViewById(R.id.iv_head); final Button btn= (Button) findViewById(R.id.btn_usernamelogin_dologin); final EditText et_pass = (EditText) findViewById(R.id.et_usernamelogin_password); final EditText et_name = (EditText) findViewById(R.id.et_usernamelogin_username); /** * 当输入被点击 */ et_name.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { start(); return false; } }); btn.setEnabled(false); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {// new Intent() } }); } private void start() { AnimationSet animationSet = new AnimationSet(true); ScaleAnimation scaleAnimation = new ScaleAnimation( 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); new Handler().postDelayed(new Runnable() { @Override public void run() { mHead.setVisibility(View.GONE); } }, 500); } /** * 菜单、返回键响应 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCode == KeyEvent.KEYCODE_BACK) { if(mHead.getVisibility()==View.GONE){ AnimationSet animationSet = new AnimationSet(true); ScaleAnimation scaleAnimation = new ScaleAnimation( 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(); } } return false; }}</span>
效果呢
代码为纯Demo 请自行优化。
1 0
- 解决弹出软键盘遮挡按钮影响用户体验
- 解决软键盘遮挡按钮
- 【Android】解决软键盘遮挡登陆按钮
- 【Android】解决软键盘遮挡登陆按钮
- 解决软键盘遮挡登录按钮
- 解决登录界面软键盘遮挡按钮问题示例
- Android软键盘弹出界面遮挡解决方案。
- android开发软键盘遮挡登陆按钮
- 关于程序进入包含EditText控件的界面会自动获取焦点并弹出软键盘影响用户体验的问题
- 弹出输入法软键盘,编辑框悬浮,及覆盖遮挡问题的解决
- 解决popupwindow中有输入框的时候,弹出软键盘遮挡布局的问题
- Android解决软键盘遮挡Button
- 完美解决 手机软键盘遮挡问题
- 完美解决 手机软键盘遮挡问题
- android 解决软键盘遮挡popwindow问题
- 记录资源 解决软键盘遮挡问题
- Android EditText 自动弹出软键盘,遮挡输入框
- Android软键盘弹出遮挡EidtText的解决方法
- 你去饭店,坐下来...
- 联想lenovo ThinkPad笔记本电脑开机进入BIOS的方法
- .Net MVC 5.0 发布IIS后总是提示 View路径不正确的可能解决方法
- Spring开发-spring入门
- centos安装redis+三种启动方式
- 解决弹出软键盘遮挡按钮影响用户体验
- 2016-03-24 《鸟哥私房菜》学习笔记
- 如何解决Python的文件批量下载问题
- EventUtil 整理
- Fragment的使用
- 【HPU】[1729]素数小问题
- Android开发遇到的细节问题整理(android studio)
- python爬取并下载麦子学院所有视频教程
- 每个人都有自己独有的写代码方式和规范,能明确的标识和有规律的代码格式是个很好的习惯。。