android 工具栏在 api 35 中无法正常工作

问题描述 投票:0回答:1

我有一个在所有设备上都能正常工作的应用程序,但我最近将目标 sdk 更新到了 api 35,现在我的应用程序的工具栏在 android api 35 中中断,并且在 api 35 之前的所有其他设备上都能正常工作。我尝试做所有我想做的事情能想到,也在网上搜索过,但没有任何效果。

这是问题的示例 任何帮助将不胜感激。

这是我的代码

activity_favourites.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".ui.activities.FavouritesActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/adView"
        android:background="@color/colorRecyclerViewBg"
        android:scrollbars="vertical"
        tools:listitem="@layout/favourites_list_item" />

    <include
        android:id="@+id/empty_layout"
        layout="@layout/empty_view"
        android:visibility="gone" />

    <include
        android:id="@+id/adView"
        layout="@layout/admob_banner_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

收藏夹活动.kt

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityFavouritesBinding.inflate(layoutInflater)
        setContentView(binding.root)

        supportActionBar?.setDisplayHomeAsUpEnabled(true)

    }

manifest.xml

  <application
        android:name=".utils.MyApplication"
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:enableOnBackInvokedCallback="true"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:targetApi="tiramisu">

        <activity
            android:name=".ui.activities.RoutingActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

        <activity
            android:exported="false"
            android:name=".ui.activities.FavouritesActivity"
            android:label="@string/favourites" />
themes.xml 
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- 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="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
android xml kotlin android-layout android-toolbar
1个回答
0
投票

在 Android 15 中,edge2edge 默认处于活动状态,但您可以通过在样式声明中使用 windowOptOutEdgeToEdgeEnforcement 标志来禁用它,因此请更改您的 theme.xml 文件中的样式,例如应用程序主题将是:

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

    <item name="android:windowOptOutEdgeToEdgeEnforcement" tools:ignore="NewApi">true</item>
</style>

只要您设置 targetSdkVersion 35 (Android 15),此解决方案就有效。

© www.soinside.com 2019 - 2024. All rights reserved.