Android介面隱藏軟鍵盤的探索(兼findViewById返回null解決辦法)

來源:互聯網
上載者:User

標籤:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.