中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android輸入法彈窗bug怎么處理

發布時間:2021-10-27 13:39:44 來源:億速云 閱讀:265 作者:小新 欄目:開發技術

小編給大家分享一下Android輸入法彈窗bug怎么處理,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

    前言

    最近發現一個bug,在項目中的某個界面,每當彈出輸入法時,背景總是隨著輸入法上移,導致背景被壓縮,雖然不打緊,但發現這個bug之后極其不愉快。

    別人家的產品處理

    隨手拿了一部手機舉例

    搜索框應該在頂部,這樣即使彈出輸入法也不會遮擋

    Android輸入法彈窗bug怎么處理

    掘金評論類似的輸入框在底部,輸入內容時,輸入框跟隨輸入法上移,背景不動

    Android輸入法彈窗bug怎么處理

    wechat聊天界面,背景不動,輸入框和聊天記錄隨著輸入法上移

    Android輸入法彈窗bug怎么處理

    Android輸入法彈窗bug怎么處理

    這三種情況基本上涵蓋了大部分包含輸入框的場景,所以接下來我們看怎么實現它們。

    實現

    輸入框在頂部的代碼就不講了。

    掘金的輸入框彈窗實現

    大家能夠很簡單的看出掘金的彈窗是比較復雜的,還可以插入圖片和表情。

    并且在彈窗出來之后,原本的文章是不可以滑動的。

    由此可以判斷出掘金評論的彈窗是個Dialog,并且是Dialog主題的Activity

    那我們來驗證一下。

    這個彈窗的Activity叫 TransparentCommentActivityNew 對不對?

    文章詳情的Activity叫 DetailActivity 對不對?

    @掘金安卓開發人員

    這樣就很簡單了,當出現了新的Activity后,就無須考慮原先Activity背景壓縮的問題,布局適配的問題。

    因為一切都是在新的Activity中進行,并且操作不了下面的Activity。

    總結:新建一個彈窗主題的Activity可以簡單方便的解決輸入法引起的布局錯亂問題。

    weChat聊天背景不會被壓縮的問題

    我遇到了一個問題解決了很久。就是正常情況的布局,背景是會被輸入法壓縮的。

    看代碼:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@mipmap/test">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal">
    
            <EditText
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:hint="請輸入..." />
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="提交" />
        </LinearLayout>
    
    </RelativeLayout>

    效果圖(可以看到月亮被壓縮了):

    Android輸入法彈窗bug怎么處理

    解決方法

    方法一

    在AndroidManifest.xml文件里面的Activity配置:

    android:windowSoftInputMode="adjustResize|stateHidden"

    在onCreate方法中設置背景,替代xml中的背景:

    getWindow().setBackgroundDrawableResource(R.mipmap.test);

    方法二

    在AndroidManifest.xml文件里面的Activity配置:

    android:windowSoftInputMode="adjustResize|stateHidden"

    2. 布局文件設置自定義背景

       <com.myapplication.MyBackground
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@mipmap/test" />
    public class MyBackground extends RelativeLayout {
        private Context mContext;
        public MyBackground(Context context) {
            super(context);
            mContext = context;
        }
    
        public MyBackground(Context context, AttributeSet attrs) {
            super(context, attrs);
            mContext = context;
        }
    
        public MyBackground(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            mContext = context;
        }
    
        public MyBackground(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
            super(context, attrs, defStyleAttr, defStyleRes);
            mContext = context;
        }
    
        @Override
    
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            DisplayMetrics dm = new DisplayMetrics();
            WindowManager mWm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
            mWm.getDefaultDisplay().getMetrics(dm);
            int screenHeight = dm.heightPixels;
            heightMeasureSpec = MeasureSpec.makeMeasureSpec(screenHeight, MeasureSpec.EXACTLY);
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    }

    方法三

    在AndroidManifest.xml文件里面的Activity配置:

    android:windowSoftInputMode="adjustNothing|stateHidden"

    動態計算輸入框的高度,在輸入法彈窗彈出時給EditText下方增加一個高度相等的View,輸入法消失時消失該View。

    看完了這篇文章,相信你對“Android輸入法彈窗bug怎么處理”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    九江市| 花莲市| 顺昌县| 盐城市| 皋兰县| 余姚市| 六盘水市| 谢通门县| 前郭尔| 马关县| 汕尾市| 三台县| 峡江县| 桐乡市| 通化县| 罗城| 沈丘县| 社旗县| 高阳县| 麻阳| 安图县| 四会市| 绍兴县| 西峡县| 股票| 枞阳县| 兴文县| 长阳| 闽清县| 竹山县| 那坡县| 吴堡县| 军事| 寿阳县| 滨海县| 平南县| 石渠县| 吴旗县| 屏山县| 罗山县| 扬州市|