`
whao189
  • 浏览: 122985 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

android 创建自定义模态框

阅读更多
这里我们我们就讨论一下怎么在android 平台下创建模态框!

首先声明一下:本文中提到的代码是我偶尔在一篇文章中看到的,但是绝非是抄袭原版

代码很大程度是我的,思想是我自己的理解,只不过我想声明一下防止别人误会!可以说这篇文

章绝对是原创!

那么创建模态框本文提供两种思路:

第一:利用AlertDialog,可以测试一下 在android 下面就是这样的,弹出来的提示框就是一个

模态框,但是怎么实现自定义的呢?这一步很关键,那就是通过View来动态的创建(或者叫填充)

一个View组件就行了!具体的操作看代码

View view = View.inflate(Context context, int resource,  ViewGroup root);


可以查看一下API,在API中的解释在context下创建(膨胀)一个view,他是创建于root这个对象的

上面的! 就是它了,接下来我们可以通过
view.findViewById(int 

resource);
创建你想要实现的组件我们暂且 就叫这个对象为 subView 前面已经提到

了使用哪个AlertDialog 这次用到它了。。

setView(View view)  Set the view to display in that dialog.

把你刚刚创建subView 放进去就可以了。。。(因为你的suvView 永远是View的子类。。)呵呵

是不是很简单?好了,这是第一种方式,我们再来看第二种方式,


我们通过PopupWindow那么在介绍PopupWindow之前我们要看看 LayoutInflater(其实也还可以

使用第一种方式 得到这个view),他还是类似于第一种形式的方式来产生LayoutInflate

然后通过这个对象的inflate (这一步就和第一种方式类似了)

inflate(int resource, ViewGroup root, boolean attachToRoot)


这样的话 我们就可以通过该方法得到一个View然后使用

view.findViewById(int resource);
创建我们我的组件

到这里位置,其实创建view的过程我完全可以使用方法一 的那些步骤 只不过这里给出了另一

种创建view的思路!好了接着就是popupwindow 了 在popupwindow 中有这样一个构造方法

PopupWindow(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)//点进这个方法 看看 。。里面有具体 解释 会有这么一个方法的解释 

 PopupWindow (View contentView, int width, int height, boolean focusable)


参数contentView就不说了,你懂的 (但是这里要换成你要弹出来的组件view了),

width 设置宽 属性(比如你要你的view 布满全屏 那就使用LayoutParams.FILL_PARENT吧),

height设置高 属性(比如你要你的view 布满全屏 那就使用LayoutParams.FILL_PARENT吧),

focusable 很明显了。。就是是否设置为焦点(建议设置为true 这样的话你就可以在弹出来

的时候做更多的操作,比如 设置键盘监听);

但是请注意一点:API中提到 The popup does not provide any background. This should be handled by the content view.  。。在弹出来的view中 并没有设置背景,背景的话就

要根据 你自定义的view 的中一样了(你的 view 可以是一个button 。可以使一个 text 。。

可以是 listview。。等等),如果 你设置动画的 透明效果的话,那就要设置 popupwindow

的setBackgroundDrawable 还有 setAnimationStyle了。。这样可以为 自己的 弹出框 添加

一些样式哦,最后的话我们还要定义一下弹出来的位置了。。showAtLocation。。这个方法。

具体我就不说了!只是给你大家提供一点思路!最后在把popupwindow都设置完之后 要调用一

下 update 方法让popupwindow知道 有新的东西加入了,再去显示!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics