Android 透明 Activity 没有覆盖整个屏幕

Posted

技术标签:

【中文标题】Android 透明 Activity 没有覆盖整个屏幕【英文标题】:Android Transparent Activity doesn't cover the whole screen 【发布时间】:2019-09-02 08:55:15 【问题描述】:

我一直在尝试创建一个不透明的 Activity,它与背景中显示的另一个 Activity 重叠。

这是我的 XML 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_
        android:layout_
        tools:context=".EmergencyActivity">
<androidx.constraintlayout.widget.ConstraintLayout
            android:layout_
            android:layout_ android:background="@color/opaque_back">

        <Button
                android:text="Button"
                android:layout_
                android:layout_ android:id="@+id/button"
                app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="parent"
        />
    </androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>

清单文件:

      <activity
            android:name=".EmergencyActivity"
            android:theme="@style/Theme.Transparent">

风格:

<style name="Theme.Transparent" parent="AppTheme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

屏幕图片:

https://imgur.com/cqfBlNM - 第一个活动屏幕

https://imgur.com/NUjTAdj - 未完全显示的活动屏幕

【问题讨论】:

【参考方案1】:

我通过将 appCompactActivity 更改为 Activity 来解决此问题,以便使用 AppCompactActivity 不支持的另一种样式。

我将清单更改为:

<activity
        android:name=".EmergencyActivity"
        android:launchMode="singleInstance"
        android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">

【讨论】:

【参考方案2】:

您的问题不够清楚,但如果您想让活动全屏显示,请在活动类中尝试此操作:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

【讨论】:

它没有用。我添加了第二个屏幕截图,应该让问题更清楚

以上是关于Android 透明 Activity 没有覆盖整个屏幕的主要内容,如果未能解决你的问题,请参考以下文章

android studio activity怎么设置透明背景

Android-1Activity生命周期

Android之Activity

如何让android 的activity变成完全透明的

Android中Activity的4种状态

如何动态设置activity背景透明度