dialog style 的 activity 的全屏设置 (dialog适用)

本文介绍如何通过自定义样式创建全屏显示的Dialog,并解决从底部升起时位置不正确的问题。文章提供了具体的XML配置示例及Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前想做一个效果,就是从当前界面,点一个按钮过后,从底部慢慢升起一个对话框。


为了方便,我一下想到了 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参考更多的系统主题实现自己需要的风格。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值