Activity 使用 Theme.AppCompat 时不透明

Activity not transparent while using Theme.AppCompat

我已经尝试了很多方法来使 activity 或主布局透明,使用定义到 style.xml 中的主题,但主题中的不同属性仍然无效。

只有view.setalpha(0)使布局或activity透明,但如何通过style.xml。我正在使用 Theme.AppCompact 来支持较低版本的 Android 设备。

我也尝试了很多 SO 答案,但 none 其中一个有效。我做错了什么或那里有任何更正?到目前为止我所做的如下。

请帮我解决问题。

style.xml

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="Theme.AppCompat.Translucent" parent="AppTheme">

        <item name="android:background">@android:color/transparent</item> <!-- Or any transparency or color you need -->
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation</item>
    </style>

</resources>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="demo.intel.com.serviceprogressbarnotification">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.Translucent">


        </activity>

        <activity android:name=".TestActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

好吧,我有同样的情况,但我想让我的 window 像对话框一样工作,并在它的背景上设置我需要的透明度级别。这是我使用的样式:

 <style name="transparent_alertDialog" parent="Theme.AppCompat.Dialog.Alert">
    <item name="windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:backgroundDimAmount">0.95</item>
    <item name="android:windowFullscreen">false</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowMinWidthMajor">50%</item>
    <item name="android:windowMinWidthMinor">50%</item>
    <item name="android:windowContentOverlay">@null</item>
    <item 
    name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowCloseOnTouchOutside">false</item>
</style>

并且在清单中我使用了它:

    <activity
    android:name=".PaymentConfirmationActivity"
    android:label=""
    android:theme="@style/transparent_alertDialog"
    android:windowSoftInputMode="adjustPan"/>

所以它对我有用。 希望它也会对你有所帮助。