100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Android 解决Dialog 样式的Activity 半透明背景失效问题

Android 解决Dialog 样式的Activity 半透明背景失效问题

时间:2020-07-04 06:09:03

相关推荐

Android 解决Dialog 样式的Activity 半透明背景失效问题

一、 设置透明主题

<style name="ActivityTransparent" parent="@style/Theme.AppCompat.Light.NoActionBar"><item name="android:windowBackground">@color/color_00000000</item> <!-- 背景色透明度 --><item name="windowNoTitle">true</item><!-- 无标题 --><item name="android:windowActionBar">false</item><item name="android:windowFrame">@null</item><item name="android:windowContentOverlay">@null</item><item name="android:windowIsTranslucent">true</item><!-- 半透明,设置为false无透明效果 --><item name="android:backgroundDimEnabled">true</item><!-- 模糊 --></style>

需要注意的 因为我们的activity 都是继承自AppCompatActivity 所以我们的theme 也一定是AppCompat 样式的 ,我所使用的是Theme.AppCompat.Light.NoActionBar

二、manifest里activity 引用主题

<activityandroid:name=".AudioRecordActivity"android:screenOrientation="portrait"android:theme="@style/ActivityTransparent" />``

三、设置activity 的状态栏全透明,适配部分机型半透明失效问题

// 设置全透明状态栏setStatusBarFullTransparent()setContentView(R.layout.activity_chnc_audio_record)overridePendingTransition(R.anim.activity_translate_in, mon_none)// 部分手机设置透明主题 无效问题theme.applyStyle(R.style.ActivityTransparent,true)

设置状态栏全透明

/*** 全透状态栏*/private fun setStatusBarFullTransparent() {if (Build.VERSION.SDK_INT >= 21) { //21表示5.0window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREENor View.SYSTEM_UI_FLAG_LAYOUT_STABLE)window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)window.statusBarColor = Color.TRANSPARENT} else if (Build.VERSION.SDK_INT >= 19) { //19表示4.4window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)//虚拟键盘也透明//getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。