问题描述
在网上查资料,使用下面设置主题的方法发现怎么都没有效果,一直是黑色的背景,我记得很久以前我也设置过,当时好像是可以的
AndroidManifest.xml
<activity android:name=".dialog.DialogInputMessage"
android:theme="@style/Theme.AppCompat.Translucent">
styles.xml
<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
据说是因为在AndroidX中设置非Theme.AppCompat.Dialog的主题会默认将背景设置成黑色,这个问题目前还没有去验证,不过尝试了网上各种方案,自己研究出了以下方法,测了几台设备都OK
解决方案
(1)对于直接继承Activity的子类
1.AndroidManifest.xml
# 请直接将theme设置成@android:style/Theme.Translucent.NoTitleBar.Fullscreen
<activity android:name=".dialog.DialogInputMessage"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
(2)对于继承AppCompatActivity的子类
1.AndroidManifest.xml
# 请直接将theme设置成@android:style/Theme.Translucent.NoTitleBar.Fullscreen
<activity android:name=".dialog.DialogInputMessage"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
请注意:上一步的android:theme一定要直接设置成这个属性,如果使用继承的方式设置主题很可能会无效,不用担心自己原来的主题用不了,我们将会在java代码里重新设置回我们想要的主题
2.styles.xml
# 声明透明背景主题, 这里你可以任意继承自己想要的主题
<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
3.DialogInputMessageActivity.java
public class DialogInputMessageActivity extends AppCompatActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
/*********************************修改部分Start*************************************/
//在super.onCreate之前将主题设置回我们定义的透明的主题即可
setTheme(R.style.Theme_AppCompat_Translucent);
/*********************************修改部分End*************************************/
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_input_message);
}
}
尊重原创,转载请注明出处
本文所参考的文章:
1.Updated to 4.2RC1 and transparent activities do not work ? Suddenly black
2.Android: Issue with transparent activity
网友评论