當前位置:首頁 » 安卓系統 » android使edittext失去焦點

android使edittext失去焦點

發布時間: 2022-10-04 05:46:24

❶ Android中EditText獲得焦點後馬上又失去了,可能是什麼造成的呢

中EditText獲得焦點後馬上又失去了有以下幾種情況:

  1. EditText處在一個可以滾動的控制項中,例如ListView等,當得到焦點後軟體鍵盤會彈出,這個時候滾動控制項會重繪,因此會失去焦點。

  2. EditText注冊了焦點事件,得到焦點後將焦點轉向了其它控制項。

  3. EditText禁止了獲取焦點。

❷ 怎麼讓edittext失去焦點

EditText初始化時候失去焦點:只需要在布局文件中設置屬性

1

android:focusable="false"

也可以在代碼中由開發者根據需求設置一定的條件,當條件滿足後,動態的設置EditText失去焦點。
示例代碼:

1
2
3

EditText et = (EditText) findViewById(R.id.et);
et.clearFocus();
et.setFocusable(false);

這種控制EditText的操作是Android程序中不經常用到的。多出現於EditText的輸入監聽回調方法中。

❸ 如何使edittext失去焦點

EditText初始化時候失去焦點:只需要在布局文件中設置屬性

java">android:focusable="false"

也可以在代碼中由開發者根據需求設置一定的條件,當條件滿足後,動態的設置EditText失去焦點。

示例代碼:
EditTextet=(EditText)findViewById(R.id.et);
et.clearFocus();
et.setFocusable(false);



這種控制EditText的操作是Android程序中不經常用到的。多出現於EditText的輸入監聽回調方法中。

❹ 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);

❺ 怎麼讓android 頁面失去焦點

在網上找了好久,有點監聽軟鍵盤事件,有點調用 clearFouse()方法,但是測試了都沒有!xml中也找不到相應的屬性可以關閉這個默認行為

1 解決之道:在EditText的父級控制項中找一個,設置成

Android:focusable="true"
android:focusableInTouchMode="true"

這樣,就把EditText默認的行為截斷了!

<LinearLayout
style="@style/FillWrapWidgetStyle"
android:orientation="vertical"
android:background="@color/black"
android:gravity="center_horizontal"

android:focusable="true"
android:focusableInTouchMode="true"
>
<ImageView
android:id="@+id/logo"
style="@style/WrapContentWidgetStyle"
android:background="@drawable/dream_dictionary_logo"
/>
<RelativeLayout
style="@style/FillWrapWidgetStyle"
android:background="@drawable/searchbar_bg"
android:gravity="center_vertical"
>
<EditText
android:id="@+id/searchEditText"
style="@style/WrapContentWidgetStyle"
android:background="@null"
android:hint="Search"
android:layout_marginLeft="40dp"
android:singleLine="true"
/>

</RelativeLayout>

</LinearLayout>


2 還有一個方法也可以非常簡單的實現這個功能:

EditText對象的clearFocus();

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editMsgView.getWindowToken(), 0);(關閉軟鍵盤。。。)

3更多問題解決辦法請參考android學習手冊,例子、源碼、文檔全部搞定,採用androidstudo的目錄結構,360手機助手中下載。下面是截圖。

❻ 如何讓edittext失去焦點

方法就是:讓EditText所在的layout獲得焦點。給layout注冊OnTouchListener監聽器直接使用 .requestFocus() 無法獲取焦點,焦點依然在EditTtext上先調用下面這兩個方法:.setFocusable(true);.setFocusableInTouchMode(true);再調用 .requestFocus() 就可獲取焦點relative.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub relative.setFocusable(true); relative.setFocusableInTouchMode(true); relative.requestFocus(); return false; } });

❼ Android中EditText獲得焦點後馬上又失去了,可能是什麼造成的呢

有以下幾種情況:

  1. EditText處在一個可以滾動的控制項中,例如ListView等,當得到焦點後軟體鍵盤會彈出,這個時候滾動控制項會重繪,因此會失去焦點。

  2. EditText注冊了焦點事件,得到焦點後將焦點轉向了其它控制項。

  3. EditText禁止了獲取焦點。

❽ 關於Android中的軟鍵盤

原文鏈接:徹底搞定Android開發中軟鍵盤的常見問題
軟體盤的本質是什麼?軟鍵盤其實是一個Dialog。

InputMethodService為我們的輸入法創建了一個Dialog,並且將該Dialog的Window的某些參數(如Gravity)進行了設置,使之能夠在底部或者全屏顯示。當我們點擊輸入框時,系統對活動主窗口進行調整,從而為輸入法騰出相應的空間,然後將該Dialog顯示在底部,或者全屏顯示。
軟鍵盤顯示的調整
Android 定義了一個屬性,名字為windowSoftInputMode, 這個屬性用於設置Activity主窗口與軟鍵盤的交互模式,用於避免軟鍵盤遮擋內容的問題。我們可以在AndroidManifet.xml中對Activity進行設置。如:android:windowSoftInputMode=」stateUnchanged|adjustPan」。 該屬性可選的值有兩部分,一部分為軟鍵盤的狀態控制,控制軟鍵盤是隱藏還是顯示,另一部分是Activity窗口的調整,以便騰出空間展示軟鍵盤。 android:windowSoftInputMode的屬性設置必須是下面中的一個值,或一個」state」值加一個」adjust」值的組合,各個值之間用 | 分開。
stateUnspecified-未指定狀態 :當我們沒有設置android:windowSoftInputMode屬性的時候,軟體默認採用的就是這種交互方式,系統會根據界面採取相應的軟鍵盤的顯示模式。
stateUnchanged-不改變狀態 :當前界面的軟鍵盤狀態,取決於上一個界面的軟鍵盤狀態,無論是隱藏還是顯示。
stateHidden-隱藏狀態 :當設置該狀態時,軟鍵盤總是被隱藏,不管是否有輸入的需求。
stateAlwaysHidden-總是隱藏狀態 :當設置該狀態時,軟鍵盤總是被隱藏,和stateHidden不同的是,當我們跳轉到下個界面,如果下個頁面的軟鍵盤是顯示的,而我們再次回來的時候,軟鍵盤就會隱藏起來。
stateVisible-可見狀態 :當設置為這個狀態時,軟鍵盤總是可見的,即使在界面上沒有輸入框的情況下也可以強制彈出來出來。
stateAlwaysVisible-總是顯示狀態 :當設置為這個狀態時,軟鍵盤總是可見的,和stateVisible不同的是,當我們跳轉到下個界面,如果下個頁面軟鍵盤是隱藏的,而我們再次回來的時候,軟鍵盤就會顯示出來。
adjustUnspecified-未指定模式 :設置軟鍵盤與軟體的顯示內容之間的顯示關系。當你跟我們沒有設置這個值的時候,這個選項也是默認的設置模式。在這中情況下,系統會根據界面選擇不同的模式。
adjustResize-調整模式 :該模式下窗口總是調整屏幕的大小用以保證軟鍵盤的顯示空間;這個選項不能和adjustPan同時使用,如果這兩個屬性都沒有被設置, 系統會根據窗口中的布局自動選擇其中一個
adjustPan-默認模式 :該模式下通過不會調整來保證軟鍵盤的空間,而是採取了另外一種策略,系統會通過布局的移動,來保證用戶要進行輸入的輸入框肯定在用戶的視野范圍裡面,從而讓用戶可以看到自己輸入的內容。

案例
沒有滾動布局xml

對於沒有滾動控制項的布局來說,adjustPan就是默認的設置,比如我們案例應用中的文本輸入8,上面的文本輸入框123和按鈕都會被頂上去,且頁面布局不可以滾動。

對於沒有滾動控制項的布局來說,整個布局會網上偏移(包括標題等)以保證輸入框的可見。如果有滾動控制項,那麼就是內容網上偏移,標題不會動,還可以通關滾動來查看被頂上去的內容,而這點是不可滾動的布局所不具備的

有滾動布局xml

對於有滾動控制項的布局,則是採用的adjustResize方式,比如我們案例應用中的文本輸入8,上面的文本輸入框123和按鈕都會被頂上去, 可以通過滾動來查看被頂上去的內容。

** 根據這一原理,我們就可以把開發中遇到的軟鍵盤遮擋頁面的問題,利用ScrollView當做根布局,讓系統採用adjustResize模式,很好地解決這一問題。**

自動彈出軟鍵盤
有時候需要一進入Activity後就自動彈出軟鍵盤,可以通過設置一個時間函數來實現,具體寫法如下:
方法一:

方法二:

有時進入Activity後不希望系統自動彈出軟鍵盤,我們可以按照下面的方法來實現:
方法一:
在AndroidMainfest.xml中選擇那個activity,設置windowSoftInputMode屬性為adjustUnspecified|stateHidden

方法二:
讓EditText失去焦點,使用EditText的clearFocus方法

方法三:
強制隱藏Android輸入法窗口

方法四:
EditText始終不彈出軟體鍵盤

EditText設置ScrollView壓縮背景圖片解決辦法
在你的Activity里加上

有時希望根據條件動態關閉軟鍵盤,我們可以使用InputMethodManager類,按照下面的方法來實現:
方法一:

方法二:
強制隱藏軟鍵盤,這個方法倒是很實用。

方法三:

方法四:

在onclick事件下.以下方法可行.(如果是EditText失去焦點/得到焦點,沒有效果)

InputMethodManager的具體用法可以參考下面的鏈接: http://www.apihome.cn/api/android/InputMethodManager.html

使用android:imeOptinos可對Android自帶的軟鍵盤進行一些界面上的設置:

android:imeOptions="flagNoExtractUi" //使軟鍵盤不全屏顯示,只佔用一部分屏幕

同時,這個屬性還能控制項軟鍵盤右下角按鍵的顯示內容,默認情況下為回車鍵
android:imeOptions="actionNone" //輸入框右側不帶任何提示 android:imeOptions="actionGo" //右下角按鍵內容為'開始' android:imeOptions="actionSearch" //右下角按鍵為放大鏡圖片,搜索 android:imeOptions="actionSend" //右下角按鍵內容為'發送' android:imeOptions="actionNext" //右下角按鍵內容為'下一步' android:imeOptions="actionDone" //右下角按鍵內容為'完成'

同時,可能EditText添加相應的監聽器,捕捉用戶點擊了軟鍵盤右下角按鈕的監聽事件,以便進行處理。

開發中有個需求是將頁面底部的一個按鈕頂起,但是開發時發現Android5.0以後的版本設置了adjustResize屬性後無法成功頂起。糾結了好久,最後在stackoverflow找到解決方案,那就是在根布局上加上fitsSystemWindow=」true」即可。

這里的fitsSystemWindow具體的作用就是你的**contentview是否忽略actionbar,title,屏幕的底部虛擬按鍵,將整個屏幕當作可用的空間。 **
正常情況,contentview可用的空間是去除了actionbar,title,底部按鍵的空間後剩餘的可用區域;這個屬性設置為true,則忽略,false則不忽略

在edittext上加入Android:imeOptions=」actionSearch」這個屬性沒響應,最後發現在2.3及以上版本不起作用,解決方案:加上

因為輸入法鍵盤右下角默認的回車鍵本來就是換行用的,當設置單行後,回車換行就失去作用了,這樣就可以設置為搜索、發送、go等等。

❾ 如何讓edittext失去焦點

EditText初始化時候失去焦點:只需要在布局文件中設置屬性

1
android:focusable="false"
也可以在代碼中由開發者根據需求設置一定的條件,當條件滿足後,動態的設置EditText失去焦點。
示例代碼:

1
2
3
EditText et = (EditText) findViewById(R.id.et);
et.clearFocus();
et.setFocusable(false);
這種控制EditText的操作是Android程序中不經常用到的。多出現於EditText的輸入監聽回調方法中。

熱點內容
如何更衣櫃密碼鎖密碼設置 發布:2024-03-28 19:42:09 瀏覽:483
如何將一台電腦當雲伺服器嗎 發布:2024-03-28 19:22:39 瀏覽:882
銀行dsk密碼什麼意思 發布:2024-03-28 19:22:35 瀏覽:10
我的世界伺服器怎麼解除ban人 發布:2024-03-28 19:21:47 瀏覽:828
ss怎麼用安卓 發布:2024-03-28 18:51:39 瀏覽:688
腳本注入到其他軟體運行 發布:2024-03-28 18:30:02 瀏覽:721
網易我的世界皮膚能用到伺服器嗎 發布:2024-03-28 18:24:44 瀏覽:805
access資料庫數據類型 發布:2024-03-28 18:16:04 瀏覽:301
安卓界面如何變成蘋果手機界面 發布:2024-03-28 18:07:17 瀏覽:742
方舟手游如何卡安卓大廳會員 發布:2024-03-28 17:52:37 瀏覽:241