我有一个显示为对话框的活动的自定义视图。 我将自定义主题应用到我的活动中,因此其父级是:“@ android:style / Theme.Dialog”,我将窗口背景更改为透明。
我的Manifest.xml:
<activity android:name="com.rev.revcorder.ui.UserAuthenticationDialogActivity" android:screenOrientation="portrait"
android:theme="@style/userAuthenticationDialog">
</activity>
我的styles.xml:
<style name="userAuthenticationDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
问题是它在我的设备上运行正常(运行4.4的Nexus 4),但在与我的相同的其他设备上运行(Nexus 4运行4.4)则不然。相反,背景显示为黑色而不透明。
只有在我通过添加:
进行语法设置时才有用getWindow().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00000000")));
我的问题是,在我的xml风格上设置窗口背景和在语法上进行操作之间有什么区别? 另外,它是如何在我的设备上工作而不是在另一台设备上?
感谢您的帮助
答案 0 :(得分:2)
在样式中再添加2个属性,如下面的代码:
<style name="userAuthenticationDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
答案 1 :(得分:1)
您可以为所有设备制作Custom Theme
。
例如,这里是自定义主题的声明,它只是标准平台的默认灯光主题。它将放在res/values
下的XML文件中(通常为res/values/styles.xml
):
<style name="LightThemeSelector" parent="android:Theme.Light">
...
</style>
要在Android 3.0 (API Level 11) or higher
上运行应用程序时使此主题使用较新的全息主题,您可以在res/values-v11
的XML文件中放置主题的替代声明,但将父主题设为全息主题:
<style name="LightThemeSelector" parent="android:Theme.Holo.Light">
...
现在像使用其他任何一样使用此主题,如果在Android 3.0或更高版本上运行,您的应用程序将自动切换到全息主题。
有关根据平台版本或其他设备配置提供替代资源(例如themes and layouts
)的详细信息,请参阅Providing Resources文档。
在下图中显示如何构建资源。
<强>更新强>
同时尝试此操作,将Theme
设置为manifest.xml
android:theme="@android:style/Theme.Translucent.NoTitleBar"