Android Dialog對話框高度自適應,限制上下邊距和設置寬度

因需求對Dialog對話框高度自適應,限制上下邊距和設置寬度

高度自適應

1、XML控制設置

只要包裹需要高度自適應的控件全部把 layout_height 設置為 wrap_content

2、樣式設置

    <!--對話框背景半透明-->
    <style name="DialogBgTranslucentStyle" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- 背景透明 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
        <!--是否浮現(xiàn)在activity之上-->
        <item name="android:windowIsFloating">true</item>
        <!--設置外邊距(外面半透明部分)距離限制其高度-->
        <item name="android:layout_marginTop">100dp</item>
        <item name="android:layout_marginBottom">100dp</item>
    </style>

    <!--對話框背景透明-->
    <style name="DialogBgTransparentStyle" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- 背景透明 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:backgroundDimEnabled">false</item>
        <!--是否浮現(xiàn)在activity之上-->
        <item name="android:windowIsFloating">true</item>
        <!--設置外邊距(外面透明部分)距離限制其高度--> 
       <item name="android:layout_marginTop">100dp</item>
        <item name="android:layout_marginBottom">100dp</item>
    </style>

設置寬度

    /**
     * 設置對話框?qū)挾?     */
    fun setDialogWidth() {
        val window = dialog!!.window
        //獲得窗體的屬性
        if (window != null) {
            val lp = window.attributes
            lp.width = ScreenUtils.getScreenWidth(requireContext())
            lp.width = lp.width - (lp.width / 6)
            //將屬性設置給窗體
            window.attributes = lp
        }
    }

    /**
     * 設置對話框?qū)挾?     *
     * @param width 寬度
     */
    fun setDialogWidth(width: Int) {
        val window = dialog!!.window
        //獲得窗體的屬性
        if (window != null) {
            val lp = window.attributes
            lp.width = width
            //將屬性設置給窗體
            window.attributes = lp
        }
    }

    /**
     * 設置對話框?qū)挾?     *
     * @param window  dialog 窗體
     * @param context 上下文
     */
    fun setDialogWidth(window: Window?, context: Context?) {
        //獲得窗體的屬性
        if (window != null) {
            val lp = window.attributes
            lp.width = ScreenUtils.getScreenWidth(context)
            lp.width = lp.width - (lp.width / 6)
            //將屬性設置給窗體
            window.attributes = lp
        }
    }

    /**
     * 設置對話框?qū)挾?     *
     * @param window dialog 窗體
     * @param width  寬度
     */
    fun setDialogWidth(window: Window?, width: Int) {
        //獲得窗體的屬性
        if (window != null) {
            val lp = window.attributes
            lp.width = width
            //將屬性設置給窗體
            window.attributes = lp
        }
    }
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容