Android Dialogs(6)Dialog类使用示例:用系统theme和用自定义的theme

时间:2021-08-17 22:54:10

使用dialog时有很多 方法,其中一个就是直接 使用基类Dialog,可用来作一个没有按钮的非模态提示框,它可以直接从系统的主题构造也可从自定义的主题构造。

基本步骤:

  • a,构造
  • b,调用dialot.show()
  • c,设置显示参数,注意用代码设置dialog显示参数要在dialog初始化之后,否则无效,在show之后就可以,如:dimAmout,alpha,width,height等

1,从系统主题构造

     TextView sectionText ;                //显示当前字母提示的dialog用的view
Dialog sectionDlg; //显示当前字母提示的dialog void initSectionText(){
sectionText = new TextView(getActivity());
int textSize = (int) sectionText.getTextSize();
sectionText.setWidth(textSize * );
sectionText.setHeight(textSize * );
sectionText.setGravity(Gravity.CENTER);
sectionText.setTextSize(textSize * );
sectionText.setBackgroundColor(Color.parseColor("#EEE685"));
} void initDlgFromSytemTheme(){
sectionDlg = new Dialog(getActivity(), android.R.style.Theme_Dialog); sectionDlg.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
sectionDlg.setContentView(sectionText);
}

设置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,自定义的主题

     Dialog sectionDlg;                    //显示当前字母提示的dialog
TextView sectionViews[]; //各个section字母对应的TextTiew void initSectionText(){
sectionText = new TextView(getActivity());
int textSize = (int) sectionText.getTextSize();
sectionText.setWidth(textSize * );
sectionText.setHeight(textSize * );
sectionText.setGravity(Gravity.CENTER);
sectionText.setTextSize(textSize * );
sectionText.setBackgroundColor(Color.parseColor("#EEE685"));
} void initDlgFromCustomTheme(){
sectionDlg = new Dialog(getActivity(), R.style.customDlgTheme);
sectionDlg.setContentView(sectionText);
}

dialog的参数设置都在主题中

   <style name="customDlgTheme"  parent="@android:style/Theme.Dialog">
<item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 -->
<item name="android:windowFrame">@null</item><!-- 边框 -->
<item name="android:windowNoTitle">true</item> <!-- 无标题栏 -->
<item name="android:windowIsTranslucent">false</item><!-- 是否半透明,背景图或背景色的透明度优先于此 -->
<item name="android:windowBackground">@drawable/selector_dialog_bg</item><!-- 背景透明 -->
<item name="android:backgroundDimEnabled">false</item><!--是否开启dlg显示时后面的灰暗背景,false表示不开启 -->
<item name="android:backgroundDimAmount">1.0</item> <!-- dlg显示时灰暗背景的灰暗值,0.0是无灰暗背景,它的优先级低于backgroundDimEnabled -->
</style>