【发布时间】:2014-07-25 08:57:56
【问题描述】:
按照本教程http://cases.azoft.com/android-tutorial-floating-activity/ 后,我能够创建一个浮动活动
但是,为此,我必须在 styles.xml 中添加这一行:
<item name="android:windowIsTranslucent">true</item>
是否可以仅使用 Android/Java 代码产生相同的效果? (例如在Activity.onAttachedToWindow() 左右...)
提前感谢您的帮助。
[EDIT 01] styles.xml 不得更改(而且我不应该知道其中的内容......)。但出于测试目的,我使用的是默认的:
<resources>
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
</style>
<style name="AppTheme" parent="AppBaseTheme">
</style>
</resources>
[EDIT 02] Resources.Theme.applyStyle() 似乎做了我想做的事(根据 API 描述:"Place new attribute values into the theme")。
所以我创建了以下custom_style.xml:
<resources>
<style name="MyCustomStyle" >
<item name="android:windowIsTranslucent">true</item>
</style>
</resources>
然后,在 onAttachedToWindow() 中,我调用了:
getTheme().applyStyle(R.style.MyCustomStyle, true);
但它没有任何效果......
【问题讨论】:
-
您能找到解决方案吗?我的应用程序有 20 个主题,我不想仅仅为了添加这个属性而复制它们......
-
抱歉,我没有找到我希望的解决方案。相反,我使用Xposed framework 破解了这个限制...我不建议您为您的应用程序这样做。
-
谢谢。我的解决方案是扩展我的完整活动(其中没有额外的功能)并在清单中定义两者。一个没有半透明主题的。然后我决定在运行时启动哪个,覆盖活动的主题(半透明将始终保持在清单中使用的主题中定义的状态),就是这样......实际上,复制主题也不起作用,因为它似乎确实使用了清单中使用的主题中的 trnslucent 属性,所以总是...
标签: android android-layout android-theme android-styles android-windowmanager