AlertDialog的解析

Posted xiongbo753

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AlertDialog的解析相关的知识,希望对你有一定的参考价值。

 

 AlertDialog是一个 Dialog的子类,主要是用来弹出一个对话框。

 一.AlertDialog 的构造方法及其属性。

  技术分享图片

    这是一个很普通的构造AlertDialog的方法。 AlertDialog的构造主要是依靠器内部类 AlertDialog.Builder 来构造的 使用的设计模式是工厂模式

 

二.AlertDialog 的各个方法的解析。

   技术分享图片

    这个是从官方文档截取下来的一句话。   英文的大致意思是  如果你的AlertDialog的 布局View 只是一个简单的String 类型的 那么可以使用  setMessaage()方法

   如果不是的话, 那么可以使用上面这一段代码。  但是我试了比较多的方法  这两段代码基本用不了。。。。   先是直接复制这段代码放到程序中去 直接报错误

   然后我又先把AlertDialog 使用show()方法出来   这次尽管没有报错但是没有起到任何作用  

  所以我一般使用的是 

setView(View view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, int viewSpacingBottom)   

  setView(View  view)                            这个方法一般是用来自定义自己的View布局的 

 

 setMessage()   在自己的contentView  只是一个String类型的话的时候可以使用

 setCustomTitle()  设置自定义的title布局           

 setTitle() 设置标题   

 setIcon() 设置图标  

 cancel()  //删除dialog 和dismiss()方法差不多 不过这个会调用 取消 的点击事件

  hide()  /隐藏dialog  但是不会删除它

对于AlertDialog的方法只要这几个就差不多了

 

 

三.AlertDialog.Builder  这个内部类基本包含了Alert Dialog的方法  它和Alert Dialog 相同的方法就不介绍了

      setCancelable(boolean)   //这个方法只要是为了设置点击dialog 外面的部分会不会导致dialog失去焦点即消失

      setAdapter(ListAdapter adapter, DialogInterface.OnClickListener listener)   //这个主要是封装了一下  假如你的AlertDialog的contentView()是一个ListView 那么可以推荐使用这个方法

   setItems(int itemsId, DialogInterface.OnClickListener listener)   setItems(CharSequence[] items, DialogInterface.OnClickListener listener)

  这个主要是setAdapter() 的低配版   它主要是 ListView的子View 只有一个String类型的TextView

     setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener) 取消按钮   有两参数 第一: 名字          第二:点击事件

     setPositiveButton()   等等

    

AlertDialog.Builder setSingleChoiceItems (int itemsId, 
                int checkedItem, 
                DialogInterface.OnClickListener listener)  这个方法很重要  决定了对话框的类型  这个类型是单选框


setMultiChoiceItems(int itemsId, boolean[] checkedItems,DialogInterface.OnMultiChoiceClickListener listener) 多选框




四.自定义AlertDialog的Style 属性集合

  <item name=”android:windowFrame”>@null</item>  //Dialog的windowFrame框为无

   <item name=”android:windowIsFloating”>true</item> //是否浮现 在Activity之上

   <item name=”android:windowIsTranslucent”>true</item> //是否半透明

   <item name=”android:windowNoTitle>true</item>     //是否显示Title

   <item name=”android:background”>@android:color/transparent</item> //设置dialog的背景

  <item name=”android:windowBackground”>@android:color/transparent</item>

  <item name=”android:backgroundDimAmount”>0.5</item>  //就是用来控制灰度的值,当为1时,界面除了我们的dialog内容是高亮显示的,dialog以外的区域是黑色的,完全看不到其他内容,系统默认值是0.5

  <item name=”android:textColor”>#ffffff</item>   //标题文字的颜色

  <item name=”android:textSize”>20sp</item>     //标题文字的大小

  <item name=”dividerHeight”>5dp</item>  

 

  设置Alert Dialog的位置 和大小

     Window window = alertDialog.getWindow();

     WindowManager.LayoutParams  lp= window.getLayoutParams();

     lp.gravity = Gravity.CENTER;  设置位置

    lp.width =100;

   lp.height  =40;       设置大小

  lp.x=20;

 lp.y=90;   

window.setAttribute(lp);

 











以上是关于AlertDialog的解析的主要内容,如果未能解决你的问题,请参考以下文章

getActivity() 在片段的 AlertDialog 中为 null

片段android中的alertdialog显示问题

AlertDialog的解析

无法在片段内创建对话框

AlertDialog的解析

如何在片段中从相机捕获图像,