A. android代碼如何 讓 edittext失去焦點
EditText初始化時候失去焦點:只需要在布局文件中設置屬性
java">android:focusable="false"
也可以在代碼中由開發者根據需求設置一定的條件,當條件滿足後,動態的設置EditText失去焦點。
示例代碼:
EditTextet=(EditText)findViewById(R.id.et);
et.clearFocus();
et.setFocusable(false);
這種控制EditText的操作是Android程序中不經常用到的。多出現於EditText的輸入監聽回調方法中。
B. android 怎樣edittext 鍵盤失去焦點時自動關閉
android 怎樣edittext 鍵盤失去焦點時自動關閉
軟鍵盤的原理
軟鍵盤其實是一個Dialog。InputMethodService為我們的輸入法創建了一個Dialog,並且對某些參數進行了設置,使之能夠在底部或者全屏顯示。當我們點擊輸入框時,系統會對當前的主窗口進行調整,以便留出相應的空間來顯示該Dialog在底部,或者全屏。
2.活動主窗口調整
Android定義了一個屬性windowSoftInputMode,
用它可以讓程序控制活動主窗口調整的方式。我們可以在配置文件AndroidManifet.xml中對Activity進行設置。這個屬性的設置將會影響兩件事情:
1>軟鍵盤的狀態——隱藏或顯示。
2>活動的主窗口調整——是否減少活動主窗口大小以便騰出空間放軟鍵盤或是否當活動窗口的部分被軟鍵盤覆蓋時它的內容的當前焦點是可見的。
故該屬性的設置必須是下面列表中的一個值,或一個「state…」值加一個「adjust…」值的組合。在任一組設置多個值,各個值之間用|分開。
"stateUnspecified":The state of the soft keyboard (whether it is hidden or
visible) is not specified. The system will choose an appropriate state or rely
on the setting in the theme. This is the default setting for the behavior of the
soft keyboard. 軟鍵盤的狀態(隱藏或可見)沒有被指定。系統將選擇一個合適的狀態或依賴於主題的設置。這個是軟體盤行為的默認設置。
"stateUnchanged":The soft keyboard is kept in whatever state it was last
in, whether visible or hidden, when the activity comes to the fore.
軟鍵盤被保持上次的狀態。
"stateHidden":The soft keyboard is hidden when the user chooses the
activity — that is, when the user affirmatively navigates forward to the
activity, rather than backs into it because of leaving another activity.
當用戶選擇該Activity時,軟鍵盤被隱藏。
"stateAlwaysHidden":The soft keyboard is always hidden when the activity's
main window has input focus. 軟鍵盤總是被隱藏的。
"stateVisible":The soft keyboard is visible when that's normally
appropriate (when the user is navigating forward to the activity's main window).
軟鍵盤是可見的。
"stateAlwaysVisible":The soft keyboard is made visible when the user
chooses the activity — that is, when the user affirmatively navigates forward to
the activity, rather than backs into it because of leaving another activity.
當用戶選擇這個Activity時,軟鍵盤是可見的。
"adjustUnspecified":It is unspecified whether the activity's main window
resizes to make room for the soft keyboard, or whether the contents of the
window pan to make the currentfocus visible on-screen. The system will
automatically select one of these modes depending on whether the content of the
window has any layout views that can scroll their contents. If there is such a
view, the window will be resized, on the assumption that scrolling can make all
of the window's contents visible within a smaller area. This is the default
setting for the behavior of the main window.
它不被指定是否該Activity主窗口調整大小以便留出軟鍵盤的空間,或是否窗口上的內容得到屏幕上當前的焦點是可見的。系統將自動選擇這些模式中一種主要依賴於是否窗口的內容有任何布局視圖能夠滾動他們的內容。如果有這樣的一個視圖,這個窗口將調整大小,這樣的假設可以使滾動窗口的內容在一個較小的區域中可見的。這個是主窗口默認的行為設置。也就是說,系統自動決定是採用平移模式還是壓縮模式,決定因素在於內容是否可以滾動。
"adjustResize":(壓縮模式)The activity's main window is always resized to make
room for the soft keyboard on screen. 當軟鍵盤彈出時,要對主窗口調整屏幕的大小以便留出軟鍵盤的空間。
"adjustPan":(平移模式:當輸入框不會被遮擋時,該模式沒有對布局進行調整,然而當輸入框將要被遮擋時,窗口就會進行平移。也就是說,該模式始終是保持輸入框為可見。)The
activity's main window is not resized to make room for the soft keyboard.
Rather, the contents of the window are automatically panned so that the current
focus is never obscured by the keyboard and users can always see what they are
typing. This is generally less desirable than resizing, because the user may
need to close the soft keyboard to get at and interact with obscured parts of
the window.
該Activity主窗口並不調整屏幕的大小以便留出軟鍵盤的空間。相反,當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分。這個通常是不期望比調整大小,因為用戶可能關閉軟鍵盤以便獲得與被覆蓋內容的交互操作。。
3.偵聽軟鍵盤的顯示隱藏
有時候,藉助系統本身的機制來實現主窗口的調整並非我們想要的結果,我們可能希望在軟鍵盤顯示隱藏的時候,手動的對布局進行修改,以便使軟鍵盤彈出時更加美觀。這時就需要對軟鍵盤的顯示隱藏進行偵聽。
我們可以藉助軟鍵盤顯示和隱藏時,對主窗口進行了重新布局這個特性來進行偵聽。如果我們設置的模式為壓縮模式,那麼我們可以對布局的onSizeChanged函數進行跟蹤,如果為平移模式,那麼該函數可能不會被調用。
4.EditText默認不彈出軟體鍵盤
方法一:
在AndroidMainfest.xml中選擇哪個activity,設置windowSoftInputMode屬性為adjustUnspecified|stateHidden
例如:
android:label="@string/app_name"
android:windowSoftInputMode="adjustUnspecified|stateHidden"
android:configChanges="orientation|keyboardHidden">
方法二:
讓EditText失去焦點,使用EditText的clearFocus方法
例如:EditText edit=(EditText)findViewById(R.id.edit);
edit.clearFocus();
方法三:
強制隱藏Android輸入法窗口
例如:EditText edit=(EditText)findViewById(R.id.edit);
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(),0);
5.EditText始終不彈出軟體鍵盤
例:EditText edit=(EditText)findViewById(R.id.edit);
edit.setInputType(InputType.TYPE_NULL);
C. Android studio TabHost添加了5個tab,每個tab下的EditText點擊沒有任何反應,不能獲得輸入焦點
1、安卓下輸入框只要不是不可用狀態,點擊是一定能獲得焦點的,你可以檢查enable屬性
2、可能是獲得了焦點沒彈輸入法,你認為沒獲得焦點
D. Android中 所謂焦點是什麼誰能幫忙解釋一下嗎!
焦點大概就是你當前要操作的地方.
例如,你有三行輸入框,
焦點在第一行輸入框時,你打字就會輸入進第1個輸入框,
焦點在哪個上,字就會輸入到哪裡.