在这个android应用程序中,当应用程序中没有返回堆栈时,左上角有一个徽标图标。 (无法返回,例如:主页)。当有返回堆栈时,有一个从类中调用的后退按钮导航(具有 24dp 高度和宽度的矢量图形)
(isSmallPortrait 用于识别 Tab 设备和手机设备)
**类调用后退按钮 **
boolean canback = getSupportFragmentManager().getBackStackEntryCount() > 0;
if (toolbarTop != null) {
if (canback) {
if(!getResources().getBoolean(R.bool.isSmallPortrait)) {
toolbarTop.setNavigationIcon(R.drawable.back_btn_black);
}else {
toolbarTop.setNavigationIcon(R.drawable.ic_baseline_arrow_back_ios_new_24_old);
}
} else {
toolbarTop.setNavigationIcon(null);
}
}
值\styles.xml
<style name="Widget.Toolbar.Button.NavigationV4" parent="Widget.AppCompat.Toolbar.Button.Navigation">
<item name="android:maxHeight">24dp</item>
<item name="android:maxWidth">24dp</item>
</style>
工具栏布局代码:
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinatorLayoutMain"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@id/toolbarBottom">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbarlayout"
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"
android:background="@drawable/toolbar_top_bg_gradient"
app:popupTheme="@style/AppTheme.PopupOverlayV4"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:id="@+id/toolbar_client_logo"
android:layout_width="80dp"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:src="@drawable/logo"
/>
正如我所提到的,这个 ic_baseline_arrow_back_ios_new_24_old 的高度和重量为 24dp,而标签设备的 png 宽度超过 24dp。在平板电脑中,当有后退堆栈时它会正确显示(后退按钮将在左上角,徽标将在后退按钮之后显示)。
但在手机中,后退按钮和徽标图标之间始终有一个空格。
我为手机和标签使用相同的布局工具栏布局。 (用于标志等)
当我将鼠标悬停在 Widget.ToolBar.button.Navigation 上时,在 values\styles.xml 中有一行说 minWidth = 56dp,但实际上不是。我在 values\styles.xml 中将它设置为 24dp 但它不会覆盖。
这是我悬停时得到的,
@style/Widget.Toolbar.Button.NavigationV4 Widget.Toolbar.Button.NavigationV4: android:android:maxHeight = 24dp android:android:maxWidth = 24dp Inherits from: @style/Widget.AppCompat.Toolbar.Button.Navigation: Inherits from: @style/Base.Widget.AppCompat.Toolbar.Button.Navigation: Inherits from: @android:style/Widget.Material.Toolbar.Button.Navigation: android:background = @drawable/control_background_40dp_material C:/Program Files/Android/Android Studio/plugins/design-tools/resources/layoutlib/data/framework_res.jar!/res/drawable/control_background_40dp_material.xml android:minWidth = 56dp android:scaleType = center Inherits from: @android:style/Widget.Material:
如何从这里覆盖这个 minWidth = 56dp 到 24dp 并在手机中显示宽度较小的后退按钮?
我对手机的尝试:
使用 24dp 宽度的 png - 没有变化
使用选项卡中显示的 png - 它像在选项卡中一样正确显示。后退按钮后的徽标。但由于手机中的工具栏较短,无法正确显示其他项目窗口标题等
使用另一个 24dp 的矢量- 没有变化
类中的 setBounds,类中的 setWidth 高度 - 没有变化
如何从这里覆盖这个 minWidth = 56dp 并在手机中显示宽度较小的后退按钮?