之前想做一个效果,就是从当前界面,点一个按钮过后,从底部慢慢升起一个对话框。
为了方便,我一下想到了 dialog style的activity。
但是发现设置了 activity的style为 dialog之后,他的大小比正常activity要小一圈,播放动画从底部升起的时候,就从这个小了一圈的底部升起,也就是从整个屏幕的中间升起。
后来自定义了一个如下style,发现也不行。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="testStyle" parent="@android:style/Theme.Dialog" >
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
</resources>
后来发现,重点就是在这一句: parent="@android:style/Theme.Dialog"。去掉之后就可以全屏了,应该是他从这个style继承过来的时候,就已经限制了大小。
另外附一篇关于这个dialog的说明,转自:http://chen2337.blog.163.com/blog/static/34039920201111751833693/
res/values文件夹新建名为dialogStyle.xml的resources样式文件,具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/dia_bg</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
这个样式文件的说明如下
parent="@android:style/Theme.Dialog":在系统Dialog样式基础上,相当于继承系统样式
<item name="android:windowFrame">@null</item>:Dialog的windowFrame框为无
<item name="android:windowIsFloating">true</item>:是否浮现在activity之上
<item name="android:windowIsTranslucent">false</item>:是否半透明
<item name="android:windowNoTitle">true</item>:是否显示title
<item name="android:windowBackground">@drawable/dia_bg</item>:设置dialog的背景
<item name="android:backgroundDimEnabled">true</item>背景是否模糊显示
<item name="android:backgroundDimAmount">0.6</item>
接下来写java代码把这个半透明弹窗显示出来,在AuthorizeActivity的onCreate方法添加如下代码:
ViewdiaView=View.inflate(this,R.layout.dialog,null);
dialog=newDialog(AuthorizeActivity.this,R.style.dialog);
dialog.setContentView(diaView);
dialog.show();
或者在Mainfest.xml中设置android:theme="@style/dialog"
经验:
可以到Android源码目录frameworks\base\core\res\res\values\styles.xml & themes.xml参考更多的系统主题实现自己需要的风格。