編輯:關於Android編程
在Android開發中,錄入信息是最基本的操作,使用非常廣泛。
但是Android對輸入法彈出/收起的支持,並不是很好。
對彈出,提供了force方式和implicit方式,對輸入卻沒有提供force方式。
可想而知,想彈能彈,想收不能收,這是多麼的痛苦!
沒有對輸入法做任何處理的情況下,EditText輸入後,點擊Button一般會自動收起輸入法。
若沒有收起,那可能是布局上有一些問題,可以嘗試在最外層添加scrollView。
筆者親測在大部分情況下,嵌套scrollView是可行的。
如果上述方法仍然不能解決問題,又對輸入板的自動收起很執著(很不幸,PM一般都這麼執著),可以考慮下面這種方式
對EditText的修改
重寫EditText的onFocusChange方法,添加如下代碼
InputMethodManager manager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); if (!hasFocus) { manager.hideSoftInputFromWindow(getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } else { manager.showSoftInput(this, ); }
這段代碼保證了EditText在獲取焦點時彈出輸入法,失去焦點時能夠關閉輸入法。
對Button的修改
在onClick方法中調用如下方法,並在調用後進行業務處理
public static void obtainFocus(View v) { v.setFocusableInTouchMode(true); v.requestFocus(); v.setFocusableInTouchMode(false); }
通過上述兩端代碼,點擊Button之後輸入板能夠正常收起。
但是進入頁面讓輸入板彈出,這個就需要單獨處理了。
原理
EditText部分
通過監聽焦點變化,進行輸入板的展示和隱藏。
焦點變化通過View.onFucusChange方法監聽即可。
Button部分
當點擊Button之後,首先獲取焦點,之後再進行業務處理。
點擊事件通過View.onClickListener注冊即可。
大家可能對setFocusableInTouchMode調用兩次有疑問,其實調用兩次是為了能夠進行多次requestFocus方法(requestFocus方法需要focusableInTouchMode為true)。
在FocusableInTouchMode為true的情況下,首次點擊Button會讓Button獲得焦點,再次點擊才能回調onClick。
為了保證每次點擊均能回調onClick,我們首先設置focusableInTouchMode 為true,這樣便能夠調用requestFocus進行焦點獲取,隨後設置focusableInTouchMode為false,保證下次點擊時仍然能正常相應onClick。
最近移植了很多C++平台的庫,很多都是後台開發的庫,因為NDK開發,以後很可能會使用,提前預研一下。libcurl這個庫很有名,用的人比較多,下載源碼,直接就可以編譯使用
綜述對於MVP (Model View Presenter)架構是從著名的MVC(Model View Controller)架構演變而來的。而對於Android應用的開
這篇文章就是示范如何用GSON把JSON數據與實體類進行相互轉化,需要用到gson-2.3.1.jar這個包。直接貼代碼了:import java.lang.reflec
在android開發中,用戶能夠撥打電話是最基本的需求。俗話說“條條大路通羅馬”,實現撥打電話的方式有多種,今天,就提供最常用兩種。 首先,撥打電話,對於用戶來說,是一
1、問題描述首先,需要解析的Json數據類似於下面的格式,但是包含了Ja