Android Dialogs(6)Dialog类使用示例:用系统theme和用自定义的theme
使用dialog时有很多 方法,其中一个就是直接 使用基类Dialog,可用来作一个没有按钮的非模态提示框,它可以直接从系统的主题构造也可从自定义的主题构造。
基本步骤:
- a,构造
- b,调用dialot.show()
- c,设置显示参数,注意用代码设置dialog显示参数要在dialog初始化之后,否则无效,在show之后就可以,如:dimAmout,alpha,width,height等
1,从系统主题构造
1 TextView sectionText ; //显示当前字母提示的dialog用的view 2 Dialog sectionDlg; //显示当前字母提示的dialog 3 4 void initSectionText(){ 5 sectionText = new TextView(getActivity()); 6 int textSize = (int) sectionText.getTextSize(); 7 sectionText.setWidth(textSize * 6); 8 sectionText.setHeight(textSize * 6); 9 sectionText.setGravity(Gravity.CENTER); 10 sectionText.setTextSize(textSize * 2); 11 sectionText.setBackgroundColor(Color.parseColor("#EEE685")); 12 } 13 14 void initDlgFromSytemTheme(){ 15 sectionDlg = new Dialog(getActivity(), android.R.style.Theme_Dialog); 16 17 sectionDlg.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 18 sectionDlg.setContentView(sectionText); 19 }
设置dialog的显示参数
sectionDlg.show();
Window dialogWindow = sectionDlg.getWindow(); WindowManager.LayoutParams wlp = dialogWindow.getAttributes(); dialogWindow.setGravity(Gravity.CENTER); /*wlp.width 可指定具体值,也可指定为ViewGroup.LayoutParams.WRAP_CONTENT等 */ wlp.width = ViewGroup.LayoutParams.WRAP_CONTENT; wlp.height = ViewGroup.LayoutParams.WRAP_CONTENT; wlp.alpha = 0.5f;//dialog显示区域透明度。 wlp.dimAmount = 0.0f;//设置dialog背景灰度
2,自定义的主题
1 Dialog sectionDlg; //显示当前字母提示的dialog 2 TextView sectionViews[]; //各个section字母对应的TextTiew 3 4 void initSectionText(){ 5 sectionText = new TextView(getActivity()); 6 int textSize = (int) sectionText.getTextSize(); 7 sectionText.setWidth(textSize * 6); 8 sectionText.setHeight(textSize * 6); 9 sectionText.setGravity(Gravity.CENTER); 10 sectionText.setTextSize(textSize * 2); 11 sectionText.setBackgroundColor(Color.parseColor("#EEE685")); 12 } 13 14 void initDlgFromCustomTheme(){ 15 sectionDlg = new Dialog(getActivity(), R.style.customDlgTheme); 16 sectionDlg.setContentView(sectionText); 17 }
dialog的参数设置都在主题中
1 <style name="customDlgTheme" parent="@android:style/Theme.Dialog"> 2 <item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 --> 3 <item name="android:windowFrame">@null</item><!-- 边框 --> 4 <item name="android:windowNoTitle">true</item> <!-- 无标题栏 --> 5 <item name="android:windowIsTranslucent">false</item><!-- 是否半透明,背景图或背景色的透明度优先于此 --> 6 <item name="android:windowBackground">@drawable/selector_dialog_bg</item><!-- 背景透明 --> 7 <item name="android:backgroundDimEnabled">false</item><!--是否开启dlg显示时后面的灰暗背景,false表示不开启 --> 8 <item name="android:backgroundDimAmount">1.0</item> <!-- dlg显示时灰暗背景的灰暗值,0.0是无灰暗背景,它的优先级低于backgroundDimEnabled --> 9 </style>