2

別のアクティビティの上に表示されるサイドメニュー アクティビティがあります。

<style name="Sidemenu" parent="Usual">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsTranslucent">true</item>

    <item name="android:windowContentOverlay">@null</item>
    <item name="android:backgroundDimEnabled">false</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
</style>

それは完璧に機能しています。通常どおり、以下のアクティビティを確認できます。

ただし、Android Studioを4.2RC1に更新しただけです..

そして今..うまくいきません!

アンダーエリアはブラックです。

完全な謎。

解決策はありますか?

4

1 に答える 1

8

数年前に同様の問題があったこの驚くべき古い投稿の礼儀: https://stackoverflow.com/a/35915764/294884

4.2RC1 回避策:

(1) これはまた別のドロイド アクティビティ/テーマ バグです

(2)マニフェストでは、テーマを Theme.AppCompat.Dialog に設定する必要があります

    // side menu
    <activity android:name=".. LeftMenu" android:theme="@style/Theme.AppCompat.Dialog" />
    <!-- beware of insane droid transparent activity bug... -->

(3) codeでのみ、テーマを自分のテーマに設定できます。(スーパーの前にそうしてください)

protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.YourTransparentTheme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.aty_leftmenu);
}

(4) スタイルの独自のテーマは次のようになります。

<style name="YourTransparentTheme" parent="YourGeneralTheme">
    <item name="android:windowBackground">@android:color/transparent</item>
    .. and other colors etc you desire ..
</style>

windowBackground のみが必要な理由の詳細: https://stackoverflow.com/a/67040753/294884

要約すると、バグの回避策は次のとおりです。

マニフェストで Theme.AppCompat.Dialog を設定する必要があります。onCreate では独自のスタイルのみを設定できます。

(余談: ほとんどのアクティビティにタイトル バーがあり (Theme.AppCompat.Light に基づく)、透明なアクティビティにタイトル バーがない場合 (Theme.AppCompat.Light.NoActionBar に基づく) は問題ないことに注意してください)。そのようにして、「左メニュー」または同様のものでメイン アプリのタイトル バーもカバーする通常のものを持つことができます。)

于 2021-04-11T12:46:26.977 に答える