標籤:
最近寫的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解決辦法)