1. 程式人生 > >自定義Dialog產生區域性背景問題

自定義Dialog產生區域性背景問題

對於習慣了用layout_weight來設計頁面佈局的小夥伴們來說,自定義Dialog/Popwindow內容的時候,或許也會想著用它來解決位於螢幕上的自適應問題吧!至少小編我就是這麼幹活的,並且也都沒有遇上哪些個問題。可如今再自己定義Dialog的時候,卻意外發現Dialog彈出效果顯示異常。

異常 [ 對話方塊內容不顯示 ]

自定義Dialog內容無顯示

出現以上異常情況,當然不要抱著僥倖的心理嘗試點選對話方塊內的可能隱藏內容,因為不會有任何響應的(已幫助嘗試)。但如果設定了點選彈窗以外的內容可退出,那麼效果依然是可見的。只是為何會出現這種問題呢?估摸著可能是設定自定義style主題的原因,固索性前去勘察,並 嘗試更改背景顏色

,未果。

<style name="Translucent_NoTitle" parent="android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:windowBackground">@android:color/transparent</item
> <item name="android:colorBackgroundCacheHint">@null</item> <item name="android:windowIsTranslucent">true</item> </style>

異常 [ 對話方塊存在區域性背景 ]

Dialog存在區域性背景

修改style對應的背景顏色屬性值沒有起效著實讓人想不通,於是乎緊跟著節奏繞回程式碼當中 引用其他style (解決問題關鍵後引用原style)。執行結果如上,此刻確實是能過顯示出彈出框的內容了,但出現區域性背景又或是哪幾個意思?躍入其他style嘗試重寫並修改屬性值從而解決區域性背景的問題,仍未果。

/**
 * 建立彈出對話方塊
 */
public RemindDialog create() {
    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    // ... 這裡將自定義Style的引用修改為系統Style的應用
    final RemindDialog dialog = new RemindDialog(mContext, R.style.Theme_AppCompat_Dialog);
    View layout = inflater.inflate(R.layout.dialog_common_remind, null);
    dialog.addContentView(layout, new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));

    // ...這裡忽略中間操作

    dialog.setContentView(layout);
    dialog.setCancelable(false);
    return dialog;
}

異常解決 [ 調皮的layout_weight ]

Dialog正常顯示

以上嘗試處理問題的方式主要都是停留在對於style的…就這樣過了一小段時間,小編回想自定義View的佈局設定,從一個抽象的角度上去遐想其執行的結果定是沒有問題的。但都這樣了只能回去改改佈局了,結果如標題所述,確確實實就是佈局上自適應“水平”權重設定的問題(?誰能告訴小編為何彈出框上下也出現區域性突出)。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="horizontal">

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="5">
        <!-- 此處忽略具體內容 -->
    </LinearLayout>

    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1" />

</LinearLayout>

最後修改的佈局內容如下。如果真的有必要實現自適應的話,其實百分比佈局也是個不錯的選擇。像這種這麼簡單的問題,今後小夥伴們也要多多注意咯(當然,可能說的是那種習慣用layout_weight解決自適應問題的大咖)。如果有更好的自定義實現,請務必留下,但如果你對自定義Dialog出現區域性背景有其他見解的,也歡迎提出來一同參考!

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="55dp"
        android:layout_marginRight="55dp">
        <!-- 此處忽略具體內容 -->
    </LinearLayout>

</LinearLayout> 

相關推薦

定義Dialog產生區域性背景問題

對於習慣了用layout_weight來設計頁面佈局的小夥伴們來說,自定義Dialog/Popwindow內容的時候,或許也會想著用它來解決位於螢幕上的自適應問題吧!至少小編我就是這麼幹活的,並且也都沒有遇上哪些個問題。可如今再自己定義Dialog的時候,卻意外

定義 Dialog 載入進度,去除定義Dialog的白色背景

去除自定義Dialog的白色背景: mDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); 這句話就可以了,一定要記得 在show()前加; 下面附上完整程式碼: public c

android 定義dialog去掉白色背景

public class VipSuccessDialog extends Dialog { Context context; View view; public VipS

去除安卓定義Dialog黑色背景,設置無邊框,透明

isf window bsp 希望 nbsp tle -name rep lan 我們在自定義Dialog的時候,往往會希望除去安卓系統定義背景和標題,以便於更好的顯示我們自己想要的效果。 其實我們只需要註意幾個地方就行了。 1.在Style文件的中定義Dialog的主題

定義Dialog彈框和其背景陰影顯示

昨天研究了一下自定義Dialog的彈框,其實要點都是把自定義好的view用setContentView(view)的方法設定進dialog裡,首先我們先看一個簡單的自定義Dialog。 一、寫佈局檔案:custom_dialog_layout.xml(這個佈局就是一個簡單的提示內容,下面有一

android 定義Dialog背景透明及顯示位置設定(轉載)

<?xml version="1.0" encoding="utf-8"?><LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="vertical"  a

android 定義dialog並實現失去焦點(背景透明)的功能

前言:由於在專案中需要用到更新顯示動畫的需求,所以想到了dialog,自定義dialog不難,網上教程很多,但是在實現dialog背景透明的需求時,遇到了一點問題,網上的一些方法在我的機器上並沒有實現,只能曲折中找到了另一個方法實現。雖然有點麻煩,但畢竟效果不錯。 此方法寫

定義dialog設定背景透明度

      為了好看,有時候需要設定dialog透明。自定義dialog只需要幾家程式碼就能實現背景透明。        在dialog初始化的時候加入下面幾句程式碼就行了。         WindowManager.LayoutParams lp = window.ge

android 定義Dialog背景圖等)

通常在一些應用中,我們需要自定義彈出框,android系統自帶的彈出框色彩方面 比較單一。下面介紹一下如何能過xml的佈局自定義dialog,很簡單的例項:程式碼如下:1. mya_dialog.xml<?xml version="1.0" encoding="utf-8"?><Linear

Android 5.0 定義dialog 背景不透明解決方法

在android 5.0 以上的版本中,自定義的dialog如果有圓角的話背景底部會出現白色,如圖: 解決方法是在style.xml檔案中定義一個dialog的樣式,程式碼如下: <s

定義Dialog背景,大小,位置。

1.要替換原有dialog的背景需要:使用自己的style,R.style.xxxx.xml 2.修改大小和位置需要:修改它的Layoutparams,就像修改view的Layoutparams類似: Window dialogWindow=this.getWindow(

Android 定義dialog,製作圓角,背景直角問題

問題:在自定義dialog彈窗時,為了美觀設計帶圓角背景,但是圓角邊框的同時會出現白色直角部分,如果設定的是白色底,會出現一種設定圓角無效的假象。 圖: 圖一,要達到的效果,圖二,突出白色直角部

定義Dialog設定全屏顯示和背景透明

因為公司業務需要,需要在每一個頁面請求網路的時候,顯示載入中的動畫,當請求完畢時,需要隱藏動畫,所以考慮自定義一個Dialog放在BaseActivity中,在BaseActivity中暴露出來兩個方法,一個用於顯示載入動畫,一個用來隱藏載入動畫。在這裡考慮使用幀動畫實現。

定義Dialog的詳細步驟

sset als java 事件 and protect 數據 獲取 是不是 自定義Dialog的詳細步驟(實現自定義樣式一般原理) 現在很多App的提示對話框都非常有個性,然而你還用系統的對話框樣式,是不是覺得很落後呢,今天我就給大家講講怎樣自定義自己的Di

android 定義dialog的實現方法

listener params .get animator miss nim style wrap 參數 最近一直在做 java 相關的東西, 雖然一直在看 Android 但感覺有點留於理論,總這樣畢竟不行,寫的多不一定懂得多,但要想懂得多就一定要寫的多,於是今天動手寫了

Android定義Dialog多選對話框(Dialog+Listview+CheckBox)

dia bundle adapter get etl wrap 點擊 所有 技術 先放效果截圖 項目中需要有個Dialog全選對話框,點擊全選全部選中,取消全選全部取消。下午查了些資料,重寫了一下Dialog對話框。把代碼放出來。 public class MainAct

如何快速的定義博客園背景圖片

設置 image 博客園 博客 如何 基本 風格 fixed img 博客園的主題背景風格基本是簡潔樸素風格,畢竟淳樸碼農的擼碼知識共享聖地不需要花裏胡哨,但是作為新一代的擼碼青年,我還是忍不住把博客園簡單的美化了一下 打開https://sm.ms/ 上傳一張你喜歡的圖

Android開發-定義Dialog

下面是效果圖 定義一個MyDialog.java工具類繼承Dialog類 具體程式碼如下: /** * Created by WW on 2018/9/12. */ public abstract class MyDialog extends Dialog{ pr

Android 定義Dialog小結

關於自定義佈局的Dialog,總是會遇到各種各樣的問題,作為一個菜鳥,想想還是打算專門開一篇總結自己遇到的各種問題。歡迎大佬們指點 自定義佈局寬度和位置問題 自定義佈局,就是自己自由地設定Dialog的樣式,所以肯定會自己寫一個Layout佈局,並把它加載出來,這才是我們想要的,但是經常會出

【舉例】Android定義Dialog——做出“確定/取消”的選擇

1、自定義Dialog的介面 <--!dialog_yesorno_for_permission.xml--> <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="