使用Theme.AppCompat时活动不透明

时间:2017-04-18 12:32:59

标签: android transparency android-theme

我已尝试使用主题定义为style.xml的主题,使主题中的不同属性仍不起作用,使活动或主要布局透明化。

仅制作布局或活动的view.setalpha(0)是透明的,但如何通过style.xml实现。我正在使用Theme.AppCompact来支持较低版本的Android设备。

此外,我已经尝试了很多SO答案,但没有一个正在运作。我做错了什么或有任何更正?到目前为止我所做的一切如下。

请帮我解决这个问题。

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>

1 个答案:

答案 0 :(得分:0)

我有同样的情况,但我想让我的窗口像对话框一样,在它的背景上,我把我所需的透明度水平。这是我用过的风格:

 <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"/>

所以它为我做了诀窍。 希望这对你也有帮助。