最近写的APP,老师说我的登陆界面虽然有ScrollView滑动,但用户体验不太好,因为软键盘会挡住输入框或登录button(小米Pad,横屏,当指定只能输入数字时没找到关闭系统自带键盘的下箭头)。

虽然我觉得ScrollView就够用了,能找到登录按钮……

在默默吐槽了下连搜狗都有的功能小米没有后,上网上搜索了下解决办法。

首先,当activity加载完成后,屏蔽EditText自动弹出软键盘,需要一句话:

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

当然需要在setContentView后使用;

接着,参照网上广泛例子,给根布局id并允许点击:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/user_info_add"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white_color"
android:clickable="true"
android:orientation="vertical"> <!--中间省略 --> </LinearLayout>

然后在对应的Activity里加入响应代码,响应点击:

 ll_login = (LinearLayout)findViewById(R.id.ll_activity_login);
/*点击空白区域关闭软键盘*/
ll_login.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ll_activity_login:
InputMethodManager imm2 = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm2.hideSoftInputFromWindow(v.getWindowToken(), 0);
break;
} }
});

想着该大功告成了吧,点击却发现软键盘无法关闭!

再查查看,问题出在ScrollView,他会屏蔽这种点击事件。解决办法不是没有,但找到的几个都对ScrollView和内部组件点击操作有一定影响( ̄_ ̄|||)

既然软键盘都能隐藏了,要你何用,删掉(╯‵□′)╯︵┻━┻

最后测试一下,没问题啦,一切正常~

PS:软键盘其实不难,但架不住千奇百怪的ERROR:

①findViewById这句话一直运行不通过,不是他下面,是他不通过:

解决办法:网上说的,IDE问题(eclipse……哎):Project→Clean;

②findViewById运行了,他的下一句setOnClickListener运行不通过:

解决办法:Debug一下,发现ll_login的值竟然是null,网上搜索下,clean过了无视,setContentView位置在前没错,View也是当前的view……

      有人说忘记xml里定义id,我之前刚做完……等等!我写的是手机平板公用的app,横竖屏都定义了,我好像只改了port没改land里的……

      改完,debug看有值了,一切正常,哭瞎……这错误卡了我n小时

Android界面隐藏软键盘的探索(兼findViewById返回null解决办法)的更多相关文章

  1. HTML 在安卓手机端软键盘弹出顶起页面布局的解决办法

    $('body').height($('body')[0].clientHeight); 以上是背景即BODY被顶起的解决办法. 如果是footer被顶起,则可以用判断解决, $('input').f ...

  2. Android中点击隐藏软键盘最佳方法——Android开发之路4

    Android中点击隐藏软键盘最佳方法 实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏: 1.重写dispatchTouchEve ...

  3. Android点击空白处,隐藏软键盘

    在做登陆或者注册的时候,软键盘经常可能会挡住一些界面.我们需要在输入完成之后隐藏软键盘. 在我们点击空白处或者非EditText的地方来隐藏软键盘. public class HomeActivity ...

  4. Android隐藏软键盘

    1,用java代码隐藏: /**隐藏软键盘**/        View view = getWindow().peekDecorView();        if (view != null) { ...

  5. Android开发,在Activity启动时,默认隐藏软键盘。和遮挡Edittext时的处理

    在Activity启动时,默认隐藏软键盘: 在AndroidManifest.xml中找到你得Activity ,为它添加属性: android:windowSoftInputMode="s ...

  6. Android隐藏软键盘收回软键盘

    代码改变世界 Android隐藏软键盘收回软键盘 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPU ...

  7. android 开启或者隐藏软键盘

    一. 隐藏软键盘方法一(注:此方法本人使用时发现isActivie()失效,建议还是用其他方法..): InputMethodManager imm = (InputMethodManager)get ...

  8. Android 隐藏软键盘

    隐藏软键盘 public void hideSoftInputView() { InputMethodManager manager = ((InputMethodManager) this.getS ...

  9. Android 调出和隐藏软键盘

    1.弹出软键盘 public static void showSoftInputMode(Context context,View windowToken) { final InputMethodMa ...

随机推荐

  1. 通过angularjs的directive以及service来实现的列表页加载排序分页

    前两篇:(列表页的动态条件搜索,我是如何做列表页的)分别介绍了我们是如何做后端业务系统数据展示类的列表页以及动态搜索的,那么还剩下最重要的一项:数据展示.数据展示一般包含三部分: 数据列头 数据行 分 ...

  2. 从启动日志看Spring IOC的初始化和Bean生命周期

    一.Tomcat中启动IoC容器的日志 启动Tomcat等容器时,控制台每次都打印出一些日志. 最近刚好在研究Spring源码,所以换个角度,从启动日志来简单的看看Spring的初始化过程! 以下是T ...

  3. 钉钉客户端JS-API权限签名算法.NET版

    前段时间写了一篇博文<钉钉如何进行PC端开发>,在里面并未解决本地生成签名的问题,需要到官网进行生成,由于钉钉门票等认证信息会超期,因此,必须能本地用代码自动更新相关参数信息,来换取签名. ...

  4. Midnight.js – 实现奇妙的固定头部切换效果

    Midnight.js 是一款 jQuery 插件,在页面滚动的时候实现多个头设计之间的切换,所以你总是有一个头与它下面的内容层叠,看起来效果很不错. Midnight.js 可以让你轻松实现这种切换 ...

  5. 由Vue引发的getter和setter思考

    公司的新项目决定使用Vue.js来做,当我打印出Vue实例下的data对象里的属性时,发现了一个有趣的事情: 它的每个属性都有两个相对应的get和set方法,我觉的这是多此一举的,于是去网上查了查Vu ...

  6. ArcEngine中合并断开的线要素(根据几何判断)

    在上一篇ArcEngine环境下合并断开的线要素(根据属性)随笔中介绍了如何通过shp文件属性表中相同的属性字段进行线要素的合并.今天刚把通过几何条件判断的方式连接断开的线要素的ArcGIS 插件完成 ...

  7. 为ListView组件加上快速滑块以及修改快速滑块图像

    本文转载自:http://blog.csdn.net/ouyang_peng/article/details/46919723 作者:欧阳鹏  欢迎转载,与人分享是进步的源泉! 转载请保留原文地址:h ...

  8. NSURLConnection获取一个MP3文件

    NSURLConnection网络请求 直接上代码-这个没什么说的,你们自己有兴趣可以自己试试 代码 #import "ViewController.h" @interface V ...

  9. 关于PHP的curl开启问题

    今天在做一个新浪登录功能,新浪提供的PHP SDK里需要用到curl_init()函数,在调试的时候报找不到curl_init()的方法. 经搜索得知需要开启curl的php扩展,那curl又是什么呢 ...

  10. WPF学习之路(十)实例:用户注册

    通过一个注册用户的实例了解页面间数据的传递 首先构建一个User类  User.cs public class User { private string name; public string Na ...