老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

android軟鍵盤,Android軟鍵盤彈出布局上移

關于Android中的軟鍵盤

原文鏈接:徹底搞定Android開發中軟鍵盤的常見問題

興山網站建設公司創新互聯公司,興山網站設計制作,有大型網站制作公司豐富經驗。已為興山1000多家提供企業網站建設服務。企業網站搭建\成都外貿網站建設要多少錢,請找那個售后服務好的興山做網站的公司定做!

軟件盤的本質是什么?軟鍵盤其實是一個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的具體用法可以參考下面的鏈接:

使用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 軟鍵盤的彈出及關閉

一、彈出:

方法1(推薦,此種方式可以自動彈出,無需延遲):

方法2(此種方式需要延遲一段時間,等UI加載完畢之后方能生效。但這個加載時間因不同手機而無法統一。你的手機好點,可能100毫秒就加載完畢,我的手機差點,可能需要1000毫秒才能加載完成。因此無法保證一定能自動彈出軟鍵盤):

方法3(推薦。原理同上,只是不需要自己寫死延遲時間。因為不同手機UI加載完畢所需時間可能不一樣,這種方法比較保險,總是在UI加載完畢之后彈出,靈活性較好。而方法2延遲時間是寫死的700毫秒,有可能在一些性能比較差的手機,700毫秒內UI還無法加載完畢,因此無法自動彈出軟鍵盤。也有可能因為手機性能太好,100毫秒就加載完UI,而后面的600毫秒就算白等了,靈活性、可靠性及用戶體驗都很差):

二、關閉(如果是在Dialog中彈出的,則一定要在Dialog關閉前關閉軟鍵盤;如果是在Activity中彈出的,則一定要在finish之前關閉軟鍵盤):

方法1:

方法2(推薦):

Android 軟鍵盤的屬性

在 Androidmanifest.xml 中,設置軟鍵盤的屬性,比較常用的有,adjustPan 和 adjustResize。那么這兩個是什么意思呢?adjust 是一個動詞,表示調整、適應,那么是誰調整、適應誰呢?

一個 Activity 的布局如下所示:DecorView 中包含 ContentView,ContentView 就是我們自己的內容。這里的 adjust,就是指 ContentView 調整,適應 軟鍵盤。當設置為 adjustPan 時,表示ConteView 適應軟鍵盤,當軟鍵盤打開時,ContentView 往上滑動,給軟鍵盤騰出空間。當設置為 adjustResize 時,表示對 ContentView 的寬高進行調整,縮小ContentView 的高度,給軟鍵盤騰出空間。這種情況下,可能會擋住Activity 底下的內容。

【轉】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開發中軟鍵盤的常見問題

2.Android UI(EditText)詳解

;fps=1

3.微信軟鍵盤布局閃動問題

Android自定義軟鍵盤

Android自定義鍵盤的使用

1、新建一個xml文件夾放在res目錄下面,然后新建xml文件:money_keyboard.xml

2、然后在XML文件中添加按鈕布局,這個布局就是鍵盤的樣子了

3 屬性介紹:

Keyboard:

存儲鍵盤以及按鍵相關信息。

android:horizontalGap

按鍵之間默認的水平間距。

android:verticalGap

按鍵之間默認的垂直間距。

android:keyHeight

按鍵的默認高度,以像素或顯示高度的百分比表示。

android:keyWidth:

按鍵的默認寬度,以像素或顯示寬度的百分比表示。

Row:

為包含按鍵的容器。

Key:

用于描述鍵盤中單個鍵的位置和特性。

android:codes

該鍵輸出的unicode值。

android:codes 官網介紹是說這個是該鍵的unicode 值或者逗號分隔值,當然我們也可以設置成我們想要的值,在源碼中提供了幾個特定的值

對照表:

android:isRepeatable

這個屬性如果設置為true,那么當長按該鍵時就會重復接受到該鍵上的動作,在 刪除鍵鍵 和 空格鍵 上通常設為true。

android:keyLabel

顯示在按鍵上的文字。

android:keyIcon 與 keyLabel

是二選一關系,它會代替文字以圖標的形式顯示在鍵上。

android:keyWidth="33.33333%p"

每一個按鈕的寬度,可以設置百分比

android:keyHeight="10%p"

每一個按鈕高度,可以設置百分比

KeyboardView是一個渲染虛擬鍵盤的View。 它處理鍵的渲染和檢測按鍵和觸摸動作。

顯然我們需要KeyboardView來對Keyboard里的數據進行渲染并呈現給我們以及相關的點擊事件做處理。 1)//設置keyboard與KeyboardView相關聯的方法。

public void setKeyboard(Keyboard keyboard)

2)//設置虛擬鍵盤事件的監聽,此方法必須設置,不然會報錯。

public void setOnKeyboardActionListener(OnKeyboardActionListener listener) 步驟上呢,做完第一步的關聯,并設置第二步的事件,調用KeyboardView.setVisible(true);鍵盤就可以顯示出來了, 是不是很簡單。不過到這里還沒有結束哦,接下來我們為了使用上的便利要進行相應的封裝。 封裝 這里我們通過繼承EditText來對Keyboard與KeyboardView進行封裝。

attr.xml文件,這里我們需要通過一個xml類型的自定義屬性引入我們的鍵盤描述文件。

1、新建一個類,我取名叫KeyUtils然后在里面新建三個屬性。KeyBoard用處可大了,他才是本體,可以通過設置他來切換鍵盤。

2、構造函數,初始下三個參數。

3、先說下預覽圖吧,就是效果圖上的預覽圖,需要預覽圖的話的將setPreviewEnabled設置為true,不過還得在布局文件中的android.inputmethodservice.KeyboardView標簽對立面設置預覽布局。否則,不會有字。至于設置的布局,一個TextView就好了~

onPress: 按下觸發。

onRelease:松開觸發。

onKey : 松開觸發,在OnRelease之前觸發。

swipeLeft : 左滑動,其他同理。哈哈~就這么懶。

onText :需要在 鍵盤xml,也就是我此時的number.xml里面中key標簽對里添加一個


文章名稱:android軟鍵盤,Android軟鍵盤彈出布局上移
文章出自:http://www.xueling.net.cn/article/dsesipe.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 成熟丰满熟妇XXXXX丰满 | 亚洲综合清纯唯美 | 98色花堂论坛最新地址 | 亚洲免费性 | 国产一级一片免费播放 | 国产精品va无码免费麻豆 | 西川av在线一区二区三区 | 老司机导航亚洲精品导航 | jvid在线播放观看免费 | 欧美日韩高清一区二区三区 | 天天色综 | 久久久中日AB精品综合 | 又黄又网站国产 | 亚洲AV无码片区一区二区三区 | 欧美日韩成人一区二区三区 | 日韩视频一区在线观看 | 蜜桃在线播放 | 精品女同一区二区三区在线观看 | 亚洲中文字幕不卡无码 | 日韩伊人| 亚洲一区二区精品视频 | 大黄一级片 | 99久久亚洲综合精品成人 | 欧美日韩国产超高清免费看片 | 男男GAY亚洲帅哥在线 | 又大又长粗又爽又黄少妇视频 | 青青草网站在线观看 | 麻豆亚洲一区 | 肉欲性大交毛片 | 嫩草视频网站 | 好男人好资源神马在线观看 | 国产在线超碰 | 精品成人久久久 | 亚洲欧美日韩系列中文字幕 | 蜜桃av免费看 | 爱草免费视频 | 性少妇freesexvide | 欧美大片一区二区 | 免费高清视频一区二区三区 | 69视频播放| 日本xxx在线观看免费播放 |