【问题标题】:How to show items on Appbar如何在 Appbar 上显示项目
【发布时间】:2021-03-15 18:51:23
【问题描述】:

尝试在工具栏上创建项目,但未显示。我已经在下面发布了所有必要的代码。我的工具栏正确显示,但是我的项目没有显示,我不知道为什么。任何帮助将不胜感激

Main_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu
        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"
        tools:context=".MainActivity">
    <item
            android:id="@+id/left"
            android:title="@string/app_name"
            android:icon="@drawable/ic_left"
            app:showAsAction="always"/>
    <item
            android:id="@+id/right"
            android:title="@string/app_name"
            android:icon="@drawable/ic_right"
            app:showAsAction="ifRoom"/>
</menu>

App_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize" xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/readerBar"
        android:background="@color/colorPrimaryDark"
        app:title="@string/app_name"
        android:theme="@style/ThemeOverlay.AppCompat.Dark">
</androidx.appcompat.widget.Toolbar>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        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"
        tools:context=".MainActivity">

    <include
            layout="@layout/app_bar"
            android:id="@+id/include" android:layout_height="wrap_content" android:layout_width="match_parent"/>

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar = (Toolbar) findViewById(R.id.readerBar);
    setSupportActionBar(toolbar);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

这是我得到的结果:

【问题讨论】:

    标签: java android android-studio intellij-idea mobile


    【解决方案1】:

    您的代码 + 菜单设置看起来不错,我认为菜单项没有显示,因为这部分:setSupportActionBar(toolbar); 失败(工具栏 == null);因为它在带有 ID 的布局内。

    当您删除 android:id="@+id/include" 时,工具栏应该会正确设置并显示项目。

    【讨论】:

    • 它仍然没有显示项目。不幸的是
    • 我刚刚在 Android Studio 4.1.1 中使用您的代码和我的删除建议创建了一个干净的项目。一切似乎都有效,我在新创建的项目中唯一做的就是更改主题,因此默认情况下它不包括工具栏(将“.DarkActionBar”更改为“.NoActionBar”)。也许你可以尝试同样的方法,看看你是否能以这种方式工作?
    【解决方案2】:

    Appbar 有 google 设置的限制,使其难以工作。 所以我有另一个建议给你, 您可以将 Appbar 替换为 RelativeLayout 或您想要的任何父布局。

    这更好,因为您可以按照自己的方式对其进行自定义。 例如,您可以通过imageView 添加您的图标,然后为它们添加监听器并控制它们。

    如果您希望您的父级高度与Appbar 相同,请像这样设置您的布局高度。

    android:layout_height="?android:attr/actionBarSize"

    【讨论】:

      猜你喜欢
      • 2012-07-07
      • 1970-01-01
      • 2020-09-25
      • 2021-02-10
      • 2021-10-15
      • 2021-06-10
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      相关资源
      最近更新 更多