<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Android登錄界面軟鍵盤適配

          共 3275字,需瀏覽 7分鐘

           ·

          2021-06-22 12:53

          一、軟鍵盤屬性


          1. 屬性介紹


          軟鍵盤的交互屬性通過android:windowSoftInputMode設(shè)置,該屬性的設(shè)置主要包含兩個(gè)方面

          第1:在當(dāng)前Activity獲取焦點(diǎn)時(shí)軟鍵盤是隱藏還是可見。屬性如下:

          屬性說明
          stateAlwaysHidden一直隱藏軟鍵盤
          stateAlwaysVisible打開Activity即顯示軟鍵盤
          stateHidden默認(rèn)隱藏,EditText獲取焦點(diǎn)時(shí)顯示
          stateVisible默認(rèn)顯示
          stateUnchanged
          stateUnspecified

          第2:是否根據(jù)軟鍵盤的顯示調(diào)整主窗口的尺寸或平移主窗口。


          屬性說明
          adjustNothing不調(diào)整主窗口,直接覆蓋
          adjustPan如果焦點(diǎn)位置距離屏幕底部距離小于軟鍵盤高度,則把整個(gè)布局頂上去到焦點(diǎn)位置,不壓縮多余空間,否則同adjustNothing
          adjustResize重新分配多余空間,保證輸入內(nèi)容不會(huì)被輸入法覆蓋,值得注意的是:全屏狀態(tài)下,adjustResize屬性會(huì)被忽略
          adjustUnspecified由系統(tǒng)決定(默認(rèn)配置)


          2. 屬性應(yīng)用示例


          下面來看在各個(gè)屬性下軟鍵盤彈出的表現(xiàn),測(cè)試時(shí)主要集中在第2類屬性,第1類屬性均使用stateHidden,也就是剛進(jìn)入界面時(shí)軟鍵盤默認(rèn)隱藏,當(dāng)EditText獲得焦點(diǎn)時(shí)彈出軟鍵盤

          測(cè)試所使用的頁面如下,其根布局是一個(gè)<LinearLayout>




          1、 adjustNothing

          可以發(fā)現(xiàn)軟鍵盤彈出之后直接覆蓋在了原布局之上,如果EditText上方的布局高度較大的話,軟鍵盤就會(huì)將EditText覆蓋住,導(dǎo)致用戶無法看到輸入框里的內(nèi)容


          2、adjustPan


          在測(cè)試界面下,EditText到底部的距離小于軟鍵盤的高度,當(dāng)軟鍵盤彈出時(shí),整體的布局被頂起來以便顯示獲取焦點(diǎn)的EditText。此時(shí)上方的背景圖會(huì)出現(xiàn)顯示不全的情況



          3、adjustResize

          在測(cè)試界面下,adjustResize和adjustNothing的效果是一樣的


          再看下adjustResize的說明,該屬性下會(huì)重新分配多余空間,來顯示獲得焦點(diǎn)的EditText。而這里使用的測(cè)試界面根布局是線性布局,視圖之間的間隔使用margin特定的值,不存在多余空間供分配

          現(xiàn)在嘗試將界面的根布局改為<ScrollView>。彈出軟鍵盤后的效果如下。點(diǎn)擊EditText后,ScrollView會(huì)滾動(dòng)調(diào)整當(dāng)前顯示的區(qū)域,使獲得焦點(diǎn)的EditText正常顯示,這時(shí)又和adjustPan相似



          二、登錄界面軟鍵盤解決方案


          來看這樣一種場(chǎng)景:有個(gè)登錄界面,該界面頂部有圖或者有背景圖片。但是EditText位于界面偏下方,如果將軟鍵盤覆蓋在上面,那么EditText獲取焦點(diǎn)時(shí)是不可見的。該界面如下所示。




          下面來為該界面適配軟鍵盤,首先將鍵盤的屬性設(shè)置為adjustPan,效果如下。此時(shí)背景圖已經(jīng)頂出屏幕邊緣,導(dǎo)致背景圖顯示不完整。



          將鍵盤屬性改為adjustResize時(shí)效果如下,由于不存在多余的空間可供分配,效果和adjustNothing相同,軟鍵盤直接覆蓋在了原布局上。


          那么怎么樣才能同時(shí)使背景圖片和EditText顯示完整呢?

          我們平時(shí)隔開布局一般使用margin屬性,這時(shí)View之間的間距都是固定的,即使設(shè)置adjustResize屬性,也不存在多余的空間可供分配。而如果使用weight來表示間隔,那么在軟鍵盤彈出之后,整體的布局高度縮減,weight的空間又會(huì)被重新分配。

          現(xiàn)將Activity布局文件修改如下,根布局使用<ScrollView>并設(shè)置android:fillViewport="true",這樣其內(nèi)部的控件就會(huì)實(shí)現(xiàn)match_parent的效果


          <?xml version="1.0" encoding="utf-8"?><ScrollView    ......    android:orientation="vertical"    android:fillViewport="true">
          <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView ....../> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登錄之后即可進(jìn)行操作"/> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
          <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="login"/> </LinearLayout>
          </ScrollView>

          該布局下的界面如下所示:


          彈出軟鍵盤后的效果如下所示,由于軟鍵盤占據(jù)了一定的高度,整體界面的高度減小,可供weight所分配的空間就減小了,這就是adjustResize的作用。


          到這里就結(jié)束啦~
          瀏覽 138
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  插插插视频| 国产日产久久高清欧美 | 黄片网站进入口 | 成人啪啪啪视频 | renrense在线观看 |