最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 浮動(dòng)編輯框的具體實(shí)現(xiàn)代碼

 更新時(shí)間:2017年10月13日 11:57:07   作者:Kevinmob  
本篇文章主要介紹了Android 浮動(dòng)編輯框的具體實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

Android app 開發(fā)中經(jīng)常會(huì)遇到一些輸入框要懸浮到軟鍵盤上方的需求,大致做法有做法如下。

Android輸入法軟鍵盤懸浮,最常見的一種方法是通過給ViewTreeObserver添加ViewTreeObserver.OnGlobalLayoutListener當(dāng)全局布局完成時(shí)或視圖樹中視圖的可見性發(fā)生變化時(shí)回調(diào)onGlobalLayout方法,在onGlobalLayout方法中獲取當(dāng)前窗口的區(qū)域,獲取區(qū)域高度如果超過屏幕的五分之一一般認(rèn)為是軟鍵盤處于顯示狀態(tài),區(qū)域高度即為輸入法軟鍵盤高度,通過此高度動(dòng)態(tài)調(diào)整view的高度,達(dá)到輸入框懸浮于軟鍵盤上方的效果,代碼如下:

ViewTreeObserver.OnGlobalLayoutListener layoutListener =
        new ViewTreeObserver.OnGlobalLayoutListener() {
      int mScreenHeight = 0;
      int mKeyboardHeight = 0;
      @Override
      public void onGlobalLayout() {
        Rect rect = new Rect();
        // 測(cè)量當(dāng)前窗口的顯示區(qū)域
        ((Activity)getContext()).getWindow().getDecorView()
            .getWindowVisibleDisplayFrame(rect);
        if(mScreenHeight <= 0){
          mScreenHeight = ((WindowManager) getContext()
              .getSystemService(Context.WINDOW_SERVICE))
              .getDefaultDisplay().getHeight();
        }
        //計(jì)算出軟鍵盤的高度
        int keyboardHeight = mScreenHeight - rect.bottom;

        //如果keyboardHeight大于屏幕的五分之一,
        // 此時(shí)keyboardHeight有效,反之就是軟鍵盤已經(jīng)關(guān)閉了。
        if (Math.abs(keyboardHeight) > mScreenHeight / 5) {
          mKeyboardHeight = keyboardHeight;
        }
      }
    }

還有一種方式是給Activity設(shè)置 Android:windowSoftInputMode="stateVisible|adjustResize",但是這種方法不是很靈活,一般解決不了產(chǎn)品的需求。

<activity android:name=".activity.xxx"
Android:windowSoftInputMode="stateVisible|adjustResize"/>

本文重點(diǎn)介紹通過透明的Activity來實(shí)現(xiàn)效果。

先來張效果圖

效果圖

全部源碼已上傳到github 點(diǎn)擊查看,別忘了star哦

1.自定義一個(gè)activity theme

<style name="NoTitleDialogTheme" parent="android:style/Theme.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowCloseOnTouchOutside">false</item>
  </style>

2.在AndroidManifest.xml中設(shè)置

<activity android:name=".FloatEditorActivity"
      android:windowSoftInputMode="stateAlwaysVisible"
      android:theme="@style/NoTitleDialogTheme"/>

3.在Activity中調(diào)整window的重力方向

public class FloatEditorActivity extends Activity implements View.OnClickListener {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.id.editorlayout);
    getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,
     ViewGroup.LayoutParams.WRAP_CONTENT);
    getWindow().setGravity(Gravity.BOTTOM);
  }
}

就這樣非常簡(jiǎn)單的實(shí)現(xiàn)了浮動(dòng)編輯框的效果,全部源碼已上傳到github并做了很好的的封裝,只需實(shí)現(xiàn)你的需求布局即可,里面也有完整的用法實(shí)例。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android中Blade的使用方法

    Android中Blade的使用方法

    這篇文章主要介紹了Android中Blade的使用實(shí)例詳解,需要的朋友可以參考下
    2018-02-02
  • Android中自定義ImageView添加文字說明詳解

    Android中自定義ImageView添加文字說明詳解

    Android中的ImageView只能顯示矩形的圖片,為了用戶體驗(yàn)更多,下面這篇文章主要給大家介紹了關(guān)于Android中自定義ImageView實(shí)現(xiàn)添加文字說明的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Android 測(cè)試入門篇

    Android 測(cè)試入門篇

    Android本身是一套軟件堆疊(Software Stack),或者成為軟件疊層架構(gòu),疊層主要分成三層:操作系統(tǒng)、中間件和應(yīng)用程序
    2014-03-03
  • 使用AccessibilityService實(shí)現(xiàn)微信自動(dòng)切換賬號(hào)功能

    使用AccessibilityService實(shí)現(xiàn)微信自動(dòng)切換賬號(hào)功能

    這篇文章主要為大家詳細(xì)介紹了使用AccessibilityService實(shí)現(xiàn)微信自動(dòng)切換賬號(hào)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Android Studio導(dǎo)入Eclipse項(xiàng)目時(shí).so庫文件的解決方法

    Android Studio導(dǎo)入Eclipse項(xiàng)目時(shí).so庫文件的解決方法

    這篇文章主要介紹了Android Studio導(dǎo)入Eclipse項(xiàng)目時(shí)項(xiàng)目中".so"庫文件的解決方法,需要的朋友可以參考下
    2018-06-06
  • Android內(nèi)容提供者ContentProvider用法實(shí)例分析

    Android內(nèi)容提供者ContentProvider用法實(shí)例分析

    這篇文章主要介紹了Android內(nèi)容提供者ContentProvider用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了內(nèi)容提供者ContentProvider獲取及解析數(shù)據(jù)的相關(guān)技巧,需要的朋友可以參考下
    2016-03-03
  • Android Activity與Intent詳解及示例代碼

    Android Activity與Intent詳解及示例代碼

    本文主要講解Android Activity與Intent的知識(shí),這里整理了相關(guān)資料并附有示例代碼,有興趣的小伙伴可以參考下
    2016-08-08
  • Android zip4j壓縮、解壓、加解密的示例代碼

    Android zip4j壓縮、解壓、加解密的示例代碼

    本篇文章主要介紹了Android zip4j壓縮、解壓、加解密的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Android實(shí)現(xiàn)日歷控件示例代碼

    Android實(shí)現(xiàn)日歷控件示例代碼

    本篇文章主要介紹了Android實(shí)現(xiàn)日歷控件示例代碼,實(shí)例講解了Android日期與時(shí)間相關(guān)控件的相關(guān)使用技巧,具有一定參考價(jià)值,需要的朋友可以參考下
    2017-03-03
  • android的got表HOOK實(shí)現(xiàn)代碼

    android的got表HOOK實(shí)現(xiàn)代碼

    對(duì)于android的so文件的hook根據(jù)ELF文件特性分為:Got表hook、Sym表hook和inline hook等。今天通過本文給大家介紹android HOOK實(shí)現(xiàn)got表的實(shí)例代碼,需要的朋友參考下吧
    2021-08-08

最新評(píng)論

六盘水市| 虹口区| 佛冈县| 集贤县| 汉中市| 弋阳县| 翁源县| 新化县| 天门市| 鄂尔多斯市| 南宫市| 刚察县| 吉木萨尔县| 兴国县| 玉屏| 宣威市| 彰化县| 甘德县| 轮台县| 潜江市| 玛纳斯县| 汶川县| 葫芦岛市| 墨竹工卡县| 平罗县| 射阳县| 库尔勒市| 蚌埠市| 尼木县| 临安市| 嘉禾县| 花莲市| 靖宇县| 石城县| 岳池县| 扶余县| 阜阳市| 儋州市| 临洮县| 明星| 平乡县|