zoukankan      html  css  js  c++  java
  • 使用自定义视图的AlertDialog

    使用自定义视图的AlertDialog主要分为以下几个步骤:

    1)利用XML文件构建自己的的视图

    2)将视图添加到AlertDialog中

    * 在进行第二步之前,有时需要对对话框窗口进行额外的设置

    下面分步骤叙述:

    1)写XML文件

    后四个参数的作用就是用来显式的声明从view代表的内容区域空间向上下左右再延伸出多少空间,延伸出去的空间也是内容区域的一部分,因为没有视图覆盖就露出了低下背景色黑色,所以这里只要显式的设定这四个方向的延伸区域均为0即可

     
    1. setView(view,0,0,0,0)  

    作为内容区域的一部分,通过view的findViewById,可以获得视图中各个子视图的引用,进而设置内容或者监听器。利用setView方法将对话框的内容区域设置好后,就可以调用show方法来显示拥有自定义内容区域的对话框了。

    setView方法是AlertDialog的自有方法,而setContentView方法是AlertDialog继承自Dialog的方法。setContentView方法会将膨胀后的视图作为整个装载对话框的Window的视图。所以,尽管使用setView和setContentView表面上看起来差不多,但是实际上层次不一样。因为setContentView(view)是将view放到window上,所以必须得先有window对象才可以,而window对象是在AlertDialog调用了show方法之后才会有的。所以setContentView方法必须在show方法调用之后才可以调用,否则会产生异常。setContentView将参数view对象添加到window上,进而通过window的findViewById方法来获得view中的各个子视图的引用,进而设置内容或者监听器。

    其它一些常用参数设置:

    弹出对话框后,如果希望对话框意外的区域颜色变暗,可以做如下设置:

    [java] view plain copy
     
    1. dialog.show();  
    2. Window window = dialog.getWindow();  
    3. window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);  
    4. WindowManager.LayoutParams params =thisDialog.getWindow().getAttributes();  
    5. params.dimAmount = 0.8f;  
    6. window.setAttributes(params);  



    dimAmount是设置对话框意外的区域能见度的,取值范围是0.0f~1.0f,0.0f是全透明,也就是说对话框下面覆盖区域以外的内容是可以看的清清楚楚的,1.0f就是一点也看不见,漆黑一片。但是让dimAmount设置起作用,必须为window加上FLAG_DIM_BEHIND旗标才可以,否则设置无效。

    点击对话框以外的区域,对话框不消失:

    这个是调用dialog对象本身的一个方法:dialog.setCanceledOnTouchOutside(false);

    当将需要的设置都设置完毕后,就可以调用setContentView(view)来添加view到窗口中。然后利用window.findViewById来获取view中定义的子视图,并设置内容或者监听器。

    最后,利用dialog来调用setContentView和使用window来调用setContentView效果是一样的,因为Dialog的setContentView方法内部就是使用它持有的window对象的setContentView方法来添加view的:

    [java] view plain copy
     
    1. public void setContentView(int layoutResID){  
    2.        mWindow.setContentView(layoutResID);  
    3. }  


    mWindow是Dialog的一个Window类型的属性,用来引用对话框的窗口对象

    https://blog.csdn.net/piglite/article/details/50453397

    当使用setContentView的时候,如果不指定任何额外的参数,那么会对话框会按照xml文件的原样来进行显示。只不过作为对话框的window不可能占据全屏,所以尽管xml文件描述的view不会占满屏幕,而是占满作为对话框的window。所以,如果想调整对话框的大小,就需要设置一下对话框窗口(window)的宽高尺寸:

  • 相关阅读:
    Gradle系列教程之依赖管理(转)
    Java程序员修炼之道 之 Logging(1/3)
    eclipse 快捷键Alt+/ 不能补充syso
    Android android:screenOrientation的简介
    Android android:configChanges的简介
    Android 手机app 嵌入网页操作
    Android Eclipse 常用快捷键
    android 查询手机已安装的第三方应用程序
    android SharedPreferences的用法
    android 常见错误集锦
  • 原文地址:https://www.cnblogs.com/wcLT/p/8966412.html
Copyright © 2011-2022 走看看