編輯:關於Android編程
android:windowSoftInputMode 使用這個屬性可以完美解決。
這個屬性的設置將會影響兩件事情: 當有焦點產生時,軟鍵盤是隱藏還是顯示
是否減少活動主窗口大小以便騰出空間放軟鍵盤
這個屬性可以設一個值,或者設兩個值(用豎線隔開)。
例如:
各個值的含義: stateUnspecified:默認設置,軟鍵盤的狀態並沒有指定,系統將選擇一個合適的狀態或依賴於主題的設置
stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity裡的狀態,無論是隱藏還是顯示
stateHidden:用戶選擇activity時,軟鍵盤總是被隱藏(這裡的用戶選擇是指用戶導航到此activity,而不是返回到次activity)
stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的(這裡的獲取焦點包括上面的導航和返回)
stateVisible:和stateHidden相反
stateAlwaysVisible:和stateAlwaysHidden相反
adjustUnspecified:默認設置,沒有指定,通常由系統自行決定
adjustResize:會調整活動主窗口大小以便騰出空間放軟鍵盤
adjustPan:會調整活動主窗口大小以便騰出空間放軟鍵盤。和adjustResize的區別是:adjustResize調整後,其他的空間仍然可以操作;而adjustPan調整後其他空間必須在關閉軟鍵盤後才能操作。所以,adjustPan是不被推薦的屬性。
方法1:給最最最外層的父Layout設置點擊事件加上id和android:clickable=“true” 然後,設置點擊事件 @Override public void onClick(View v) { switch (v.getId()) { case R.id.rootview: InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); break; } }
方法2:dispatchTouchEvent方法中,每次ACTION_DOWN的時候,判斷是不是EditText區域,如果不是,關閉軟鍵盤@Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View v = getCurrentFocus(); if (isShouldHideInput(v, ev)) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } } return super.dispatchTouchEvent(ev); } // 必不可少,否則所有的組件都不會有TouchEvent了 if (getWindow().superDispatchTouchEvent(ev)) { return true; } return onTouchEvent(ev); } public boolean isShouldHideInput(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { int[] leftTop = { 0, 0 }; //獲取輸入框當前的location位置 v.getLocationInWindow(leftTop); int left = leftTop[0]; int top = leftTop[1]; int bottom = top + v.getHeight(); int right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // 點擊的是輸入框區域,保留點擊EditText的事件 return false; } else { return true; } } return false; }
Android中Button控件應該算作是比較簡單的控件,然而,它的使用頻率卻是非常的高,今天,我在這裡總結了三種常用的點擊Button實現其功能的方法。1.很多時候,我
在Java中默認情況下一個進程只有一個線程,也就是主線程,其他線程都是子線程,也叫工作線程。Android中的主線程主要處理和界面相關的事情,而子線程則往往用於執行耗時操
一、什麼是加殼?加殼是在二進制的程序中植入一段代碼,在運行的時候優先取得程序的控制權,做一些額外的工作。大多數病毒就是基於此原理。二、加殼作用加殼的程序可以有效阻止對程序
Spinner下拉列表該布局對應的關系圖: 常用屬性:android:entries(指定spinner要顯示的字符串資源。必須是在strings資源文件中定義的字符串資