Android 自定義Dialog使用

不知道大家有沒有一個煩惱就是自定義dialog 的時候。不是位置不對就是佈局不對。那麼如何才能夠顯示出一個合適的dialog呢。

首先 就是要定義一個style 供dialog 創建時使用。反正我當時寫style 的時候完全不知道那些屬性是幹嘛用的。所以我這裏貼出一個平時使用的style 並且註上註解,這樣大家可以瞭解下屬性配置是幹嘛用的。

 <style name="info_dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
 <!-- 邊框 -->
        <item name="android:windowIsFloating">true</item>
 <!-- 是否浮現在activity之上 -->
        <item name="android:windowIsTranslucent">true</item>
 <!-- 半透明 -->
        <item name="android:windowNoTitle">true</item>
 <!-- 無標題 -->
        <item name="android:windowBackground">@color/transparent</item>
 <!-- 背景透明 -->
        <item name="android:backgroundDimEnabled">true</item>
 <!-- 模糊 -->
    </style>
我着重說下 windowDimEnabled   這個屬性設置爲false 的話你 dialog 是沒有半透明背景色的。 

有了一個style後 就是我們自己定義的佈局啦。佈局上跟佈局有明確的設置寬高的話。實際在dialog 顯示的時候你會發現 設置的數值和顯示的不一樣 。那麼如何能按照我們想要的寬高來顯示呢。 

 final Dialog dialog = new Dialog(context,theme);
			 View view =View.inflate(context, R.layout.dg_del_subject,null);
			 TextView  tv_del=(TextView) view.findViewById(R.id.tv_del);
			 TextView  tv_cancle=(TextView) view.findViewById(R.id.tv_cancle);
			 width=EmDpPxUtils.Dp2Px(context, width);
			 height=EmDpPxUtils.Dp2Px(context, height);
			 Window window = dialog.getWindow();
			 window.setBackgroundDrawable(null);// 加上這個可以避免有些系統 dialog 有黑色邊框
			 window.setGravity(Gravity.BOTTOM);// 控制dialog 的位置 
			 dialog.setContentView(view, new LinearLayout.LayoutParams(
					 width,  
		               height));


在setContentView 中指定 寬高 對於顯示來說是準確的。如果你的內容高度和這裏設置的高度不一致,或者說無法確定這裏設置多高的話。可以將高度改爲wrapcontent 的即可。所以要在這裏設置下。window.setGravity 則可以控制dialog顯示的位置

到這裏基本上就可以實現一個正常的。dialog 了。。。。 想怎麼show 就怎麼show 。。。生氣


	

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章