當前位置:首頁 » 安卓系統 » androidedittext軟鍵盤

androidedittext軟鍵盤

發布時間: 2022-11-26 16:32:53

❶ android開發中,EditText點擊事件可以響應,就是不彈出軟鍵盤。怎麼解決,EditText是在Dialog中使用的

當點擊EditText時:

1、存儲當前的輸入類型
2、設置輸入類型為InputType.TYPE_NULL,禁止手機軟鍵盤
3、還原原來的輸入類型,因為這次操作完,還要允許用戶修改。
4、彈出日期選擇對話框,操作完後將結果顯示到EditText上。

隱藏軟體盤,代碼如下:

EditText et_start_time = (EditText) this.findViewById(R.id.et_start_time);
int inType = et_start_time.getInputType();
et_start_time.setInputType(InputType.TYPE_NULL);
et_start_time.onTouchEvent(event);
et_start_time.setInputType(inType);
et_start_time.setSelection(et_start_time.getText().length());

❷ 如何實現android EditText允許輸入字母和數字,同時默認彈出數字鍵盤

這個問題看似簡單,不過由於Android輸入法的開放性,許多輸入法相關的參數設置是由第三方輸入法來實現的,而第三方輸入法眾多、實現不一,導致這個問題變得很復雜。
結論是,目前來看,並沒有直接的方法,可以對所有輸入法實現上述需求。
不過針對這個問題,我們有以下幾種處理方案:

設置android:digits屬性,允許輸入數字和字母。
設置android:inputType為"number",將鍵盤切換為數字鍵盤。
這里的關鍵是,雖然單獨設置android:inputType="number"時,只允許輸入數字;但同時設置android:inputType和android:digits時,允許輸入的字元是以android:digits為準的。

當輸入法本身的UI允許在數字鍵盤、字母鍵盤間切換時,該方案是有效的;但是一些輸入法的數字鍵盤不能切換到字母鍵盤,該方案失效;特別是,Android5.0的原生輸入法就是如此,數字鍵盤UI沒有提供切換到其他鍵盤的按鈕。

雖然該方案對一些輸入法(尤其是英文輸入法)無效,但是中文輸入法基本都是有效的。如果APP僅在國內用的,這個方案夠用了

方案一失效的主要原因是,輸入法界面中沒有提供切換鍵盤的按鍵,所以我們可以自己添上按鍵。
帶來的問題是,自己添加按鍵,很難與輸入法保持統一的UI風格;而當輸入法本身有鍵盤切換按鍵時,這個方案是畫蛇添足,既怪異又不美觀。 所以這個方案在UI上有嚴重缺陷,並不實用。
效果圖如下:

Activity如下:

activity_main.xml如下:

自定義鍵盤可以徹底解決問題,是最完美的方案;但是復雜度有點高。

默認彈出數字鍵盤真的有那麼重要麼?沒有的話,乾脆不要折騰了,StackOverflow上那麼多人已經證明這個問題無完美解了。

❸ EditText怎樣打開軟鍵盤

1、edittext有焦點(focusable為true)阻止輸入法彈出

edittext=(edittext)findviewbyid(r.id.txtbody); edittext.setontouchlistener(new ontouchlistener() { public boolean ontouch(view v, motionevent event) { edittext.setinputtype(inputtype.type_null); // 關閉軟鍵盤 return false; } });

2、當eidttext無焦點(focusable=false)時阻止輸入法彈出

inputmethodmanager imm = (inputmethodmanager)getsystemservice(input_method_service); imm.hidesoftinputfromwindow(edittext.getwindowtoken(), 0);

❹ EditText彈出軟鍵盤遮住輸入框問題

如果在Activity中的布局的下方有EditText,獲取焦點彈出軟鍵盤的時候,如果不做處理,軟鍵盤可能會遮擋輸入框,用戶提現不好,網上也有很多人提出結局方案,這里就分析一下解決的效果.

需要用到EditText的布局大概分為兩種,一種是頁面顯示的內容不希望有殘缺,比如軟鍵盤把標題擠出了屏幕,如登錄注冊搜索等,EditText多半在頁面上半部分.另一種是頁面的上半部分不重要,比如聊天窗口,軟鍵盤彈出的時候,上半部分的聊天記錄可以被基礎屏幕外,EditText多半在最下方.其他的情況可以根據本文做出選擇, 結果在最下面 .

開始:

網上針對這個問題解決的方法大概這么幾種:

1.修改AndroidManifest.xml文件.

2.在Activity中添加配置.

3.在布局文件中添加ScrollVie.

在AndroidManifest.xml中對應的Activity配置: android:windowSoftInputMode="stateVisible|adjustResize"

這里SOFT_INPUT_ADJUST_RESIZE和SOFT_INPUT_ADJUST_PAN和上面中的adjustResize和adjustPan效果是一樣的.

ScrollView是能讓彈出的軟鍵盤添加到布局的下面,從而不擋住部分布局.這里往往需要跟上面的adjustResize和adjustPan兩個狀態一起用.
布局:

向上移的方式 設置:

壓縮的方式 設置:

結果:
只要彈出軟鍵盤會影響到布局的情況,都用ScrollView把布局包裹起來,被包裹的內容就是可能被縮放或擠出屏幕外的內容.然後根據EditText的位置判斷用adjustResize還是用adjustPan.
adjustResize是收縮adjustPan是向上擠
個人推薦,登錄注冊用adjustResize,聊天窗口用adjustPan

❺ Android怎麼關閉EditText中的軟鍵盤

1、EditText有焦點(focusable為true)阻止輸入法彈出

editText=(EditText)findViewById(R.id.txtBody); editText.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { editText.setInputType(InputType.TYPE_NULL); // 關閉軟鍵盤 return false; } });

2、當EidtText無焦點(focusable=false)時阻止輸入法彈出

InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

❻ 【轉】Android軟鍵盤的全面解析

軟鍵盤其實是一個Dialog

InputMethodService為我們的輸入法創建了一個Dialog,並且對某些參數進行了設置,使之能夠在底部或者全屏顯示。當我們點擊輸入框時,系統會對當前的主窗口進行調整,以便留出相應的空間來顯示該Dialog在底部,或者全屏。

其實這段話我們經常在各種軟鍵盤博客所看到,但是大家並不知道Android是怎麼為我們創建的這個Dialog,所以我先帶大家來看下軟鍵盤生成這塊的源碼,了解軟鍵盤的生成流程。

我們先來看一下InputMethodService的繼承關系:

因為InputMethodService屬於服務,接下來我們先看一下服務的入口onCreate()方法:

通過上面的分析,我們懷疑這里的SoftInputWindow是軟鍵盤彈出創建的Dialog對象,下面我們看下SoftInputWindow的源碼。

看到這里大家就能明白了,為什麼說軟鍵盤就是一個Dialog。而且這里通過設置Gravity.BOTTOM來控制當前Dialog在Window中的位置。

在Android中,可以通過給Activity設置 windowSoftInputMode 這個屬性來控制軟鍵盤與Activity的主窗口的交互方式。

Activity 的主窗口與包含屏幕軟鍵盤的窗口的交互方式,該屬性的設置影響兩個方面:

該設置必須是下面所列的值之一,或者是一個「state…」值加上一個「adjust…」值的組合,在任一組中設置多個值(例如,多個「state…」值)都會產生未定義結果。各值之間使用垂直條 (|) 分隔。

下面將通過例子來介紹 adjustNoting adjustUnspecified adjustResize adjustPan 在軟鍵盤彈出的區別:

非滾動布局xml

點擊最下面的EditText12

滾動布局xml

通過上面的例子,我們可以完全理解adjust系列的各個參數的作用。而軟鍵盤的顯示和隱藏這裡面需要並不多,而且內容並不算復雜,大家回去自己嘗試下就可以。

在日常開發中,如果需要將軟鍵盤的Enter鍵更改為其他鍵,可以設置其 android:imeOptions 屬性,這個屬性可以控制軟鍵盤的Enter鍵,以及橫屏情況下的軟鍵盤顯示狀態。

該設置必須是下面所列的值之一,或者是一個「action…」值加上一個「flag…」值的組合,在action…組中設置多個值(例如,多個「action…」值)都會產生未定義結果,而flag….可以設置多個。各值之間使用垂直條 (|) 分隔

控制軟鍵盤上的Enter鍵

橫屏下控制軟鍵盤

總結一下:
這里大部分的屬性,已經介紹完畢,如果英語好的同學,可以去看下官方文檔,可以更好的理解,並且本文以搜狗輸入法為實踐,可能其他的輸入法與其顯示的不同,但是功能應該都是一樣的。

而如果要在橫屏狀態不希望軟鍵盤全屏顯示最好是將flagNoFullscreen和flagNoExtractUi結合使用,這樣體驗上會更好

android:imeOptions=」flagNoFullscreen|flagNoExtractUi」

Android官網的Api

如果需要監聽軟鍵盤的右下角的按鍵,需要為EditText設置setOnEditorActionListener()監聽:

上面的方式,只是展示了如何監聽各個按鍵的方法,如果需要消費事件,則需要return true。

(1)第一次寫這么長的博客,感覺會有一些不足,各位看官如果有不合理的地方,或者有誤的地方請直接指出。

(2)本來想整理成一個Demo的,後來簡單看來下,該有的幾乎都貼出來了,有需要的可以按需復制就可以。

(3)寫完這篇博客之後,感覺博客干貨還是不多,所以定位這篇文章算是總結性質加上實際案例性質的博客。

(4)Android軟鍵盤的總結就差不多到這里,希望各位看官,如果看到這里有收獲,就點點贊,灌灌水,頂一波,這樣博主才有寫下去的動力。

(5)感謝小輝同學的校驗,調整了文章中不通順的地方。

1.徹底搞定Android開發中軟鍵盤的常見問題
http://blog.csdn.net/mynameishuangshuai/article/details/51567357

2.Android UI(EditText)詳解
http://blog.csdn.net/qq_28057577/article/details/51919965?locationNum=12&fps=1

3.微信軟鍵盤布局閃動問題
https://blog.dreamtobe.cn/2015/09/01/keyboard-panel-switch/

❼ Android的EditText在怎樣獲取焦點並彈出軟鍵盤

  1. //讓編輯框彈出來,並顯示對誰進行評論

  2. commentEditText.setFocusable(true);

  3. commentEditText.setFocusableInTouchMode(true);

  4. commentEditText.requestFocus();

  5. //打開軟鍵盤

  6. InputMethodManagerimm=(InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);

  7. imm.toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);

  8. //讓編輯框彈出來,並顯示對誰進行評論
    commentEditText.setFocusable(true);
    commentEditText.setFocusableInTouchMode(true);
    commentEditText.requestFocus();
    //打開軟鍵盤
    InputMethodManagerimm=(InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);上面的代碼,能夠讓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等等。

❾ Android EditText獲取焦點並彈出軟鍵盤

1、首先,在xml文件中通過讓edittext獲取焦點

<EditText

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:padding="17dp"

        android:textColor="#333333"

        android:textColorHint="#999999"

        android:hint="請輸入課件描述..."

        android:gravity="top|left"

        android:background="@null"

        >

        <requestFocus/>

    </EditText>

2、在清單文件中給activity添加android:windowSoftInputMode=」stateVisible」屬性,這樣一進入這個頁面的時候游標就自動顯示,軟鍵盤也顯示出來

<activity

            android:name=".wonderfulmoment."

            android:windowSoftInputMode="stateVisible"></activity>

❿ Android ListView下方放一個EditText,軟鍵盤彈出問題。

找到問題原因了,是因為我的ListView設置了android:transcriptMode="alwaysScroll"屬性,去掉就好了。
android:windowSoftInputMode設置為"stateHidden|adjustUnspecified"其實在我這里adjustUnspecified應該等價於ReSize吧
沒做實驗驗證。恩,總之,謝謝大家了。

熱點內容
發帖站源碼 發布:2024-04-23 20:22:45 瀏覽:681
小豚攝像頭存儲卡滿了怎麼辦 發布:2024-04-23 20:04:41 瀏覽:231
我的世界伺服器管理應該做什麼 發布:2024-04-23 19:37:19 瀏覽:146
伺服器是如何處理多個用戶的請求 發布:2024-04-23 19:35:26 瀏覽:957
寫安卓用什麼架構 發布:2024-04-23 18:51:14 瀏覽:413
安卓r11是什麼介面 發布:2024-04-23 18:42:51 瀏覽:762
公元紀年法的演算法 發布:2024-04-23 18:38:25 瀏覽:113
遠景s1什麼配置 發布:2024-04-23 18:12:11 瀏覽:498
系統程序媒體存儲設備 發布:2024-04-23 18:12:09 瀏覽:822
全民槍王得到禮包都是密碼多少 發布:2024-04-23 17:55:06 瀏覽:225