下面是我的实现经历:
1.首先,我是直接使用AlertDialog来实现,确定是,形状有点难看,而且获得Dialog里面的控件略显麻烦(因为我要做的登陆框有一定的布局),然后就给我就放弃了,可能因为我太水了,不能很好的使用它
2.然后我就使用PopupWindow来实现,界面是达到了我的要求,控件的获得通过Inflater就可以获得了相对较简单,但是有一个缺点就是,当点击输入的时候,对话框不会根据软键盘的位置而改变位置,网上搜了搜,还不能直接监听软键盘的出现和消失的事件消息,挣扎了一个下午,果断放弃。
3.最后直接就使用Activity来实现了,界面达到了要求,控件获取也容易,还能根据软键盘而改变位置,集体实现如下:
第一,创建Activity,并布置好相应的布局。
第二,个人觉得是最重要的一部,就是注册Activity的时候,设定好Activity的theme属性为Dialog,要自定义自己的Style文件,这样Activity的显示才会按照自己的要求实现,具体代码如下:
1
2
3
4
|
<activity android:name= "com.zsxy.schedule.Login" android:theme= "@style/login_dialog" > </activity> |
其中login_dialog文件如下:
1
2
3
4
5
6
7
8
9
|
<style name= "login_dialog" parent= "@android:style/Theme.Dialog" > <item name= "android:colorBackgroundCacheHint" > @null </item> <item name= "android:windowFrame" > @null </item> <item name= "android:windowIsFloating" > true </item> <item name= "android:windowIsTranslucent" > true </item> <item name= "android:windowNoTitle" > true </item> <item name= "android:windowBackground" > @android :color/transparent</item> <item name= "android:backgroundDimEnabled" > false </item> </style> |
3.最后想调用其他Activity那样调用就行了