码迷,mamicode.com
首页 > 移动开发 > 详细

Android界面隐藏软键盘的探索(兼findViewById返回null解决办法)

时间:2015-07-15 10:48:01      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

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

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

当然需要在setContentView后使用;

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

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:id="@+id/user_info_add"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent" 
 6     android:background="@color/white_color"
 7     android:clickable="true"
 8     android:orientation="vertical">
 9 
10 <!--中间省略 -->
11 
12 </LinearLayout>

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

 1 ll_login = (LinearLayout)findViewById(R.id.ll_activity_login);
 2         /*点击空白区域关闭软键盘*/
 3         ll_login.setOnClickListener(new OnClickListener(){
 4             @Override
 5             public void onClick(View v) {
 6                 switch (v.getId()) {
 7                 case R.id.ll_activity_login:
 8                      InputMethodManager imm2 = (InputMethodManager)
 9                      getSystemService(Context.INPUT_METHOD_SERVICE);
10                      imm2.hideSoftInputFromWindow(v.getWindowToken(), 0);
11                     break;
12                 }
13 
14             }
15         });    

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

再查查看,问题出在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解决办法)

标签:

原文地址:http://www.cnblogs.com/hopecapital/p/4647613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!