ActionBar在发布版本中缺少后退箭头,但没有调试版本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActionBar在发布版本中缺少后退箭头,但没有调试版本相关的知识,希望对你有一定的参考价值。

当我从android应用程序的调试版本转移到发布版本时,ActionBar中的后导航箭头被汉堡包取代(因为缺少更好的名称),这不是我想要的。

这是调试版本,后面应该是箭头。

enter image description here

这是发布版本,汉堡包。

enter image description here

这是用户使用Jetpack Navigation Component导航到片段时出现的默认后退箭头,在AppBarLayout中如下所示:

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay">

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/AppTheme.PopupOverlay">

            </androidx.appcompat.widget.Toolbar>

        </com.google.android.material.appbar.AppBarLayout> 

当我在发布版本中关闭缩小时,后退箭头重新出现。所以它与缩小有关。

但是我告诉ProGuard要保留什么?我试过这一切,但没有一个帮助:

-keep class androidx.appcompat.widget.Toolbar{}
-keep class androidx.navigation.NavController{}
-keep class androidx.navigation.Navigation{}
-keep class androidx.navigation.ui.AppBarConfiguration{}
-keep class androidx.navigation.ui.navigateUp.** {*;}
-keep class * extends android.support.v4.app.Fragment{}
-keep class com.google.android.material.appbar.AppBarLayout{}

提前致谢!

答案

我有同样的问题,并在Google Issue Tracker找到它。有人在那里有一个解决方案:

-keep class androidx.appcompat.graphics.drawable.DrawerArrowDrawable { *; }

显然,Proguard默认对后箭头drawable(DrawerArrowDrawable)进行了模糊处理。这解决了我的问题,我没有任何其他Proguard规则。

你也应该用android.support.v4.app.Fragment取代androidx.fragment.app.Fragment(尽管它与你的问题无关)

以上是关于ActionBar在发布版本中缺少后退箭头,但没有调试版本的主要内容,如果未能解决你的问题,请参考以下文章

Actionbar中后退箭头的颜色不会更改

以编程方式创建的后退按钮没有箭头

应用ActionBar中的返回按钮

在工具栏上显示返回箭头

更改后退按钮上的颜色(在ActionBar上)

操作栏黑色后退箭头问题