【问题标题】:BottomNavigationView with AppCompat带有 AppCompat 的 BottomNavigationView
【发布时间】:2021-08-27 04:56:09
【问题描述】:

亲爱的开发者们!

我现在正在学习在 java 上开发应用程序,我最近才发现存在 BottomNavigationView。在此之前,我实际上只是在布局底部排列了按钮(耻辱)。我遇到了这样的问题:几乎所有的活动都扩展了 AppCompatActivity,但导航视图只适用于片段(对不起,如果我错了)。我可以以某种方式将它与 AppCompat 一起使用,或者可能使用另一个小部件吗?非常感谢您的回答,特别是如果它是开放的。提前致谢。

【问题讨论】:

  • 现在Android移动应用都是用Kotlin开发的!考虑尽快直接学习
  • @GianlucaVeschi 是对的。要开始开发,可以使用 java,但请尝试尽快转向 kotlin。由于其增长速度非常快的语言还具有 java 无法处理的安全功能。您可以查看this链接。
  • 谢谢你们!

标签: java android layout bottomnavigationview appcompatactivity


【解决方案1】:

BottomNavigationView 可用于活动或片段。 Details

你可以像这样在xml中设置它:

<com.google.android.material.bottomnavigation.BottomNavigationView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schema.android.com/apk/res/res-auto"
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:layout_gravity="start"
    app:menu="@menu/my_navigation_items" />

在您的 res/menu/my_navigation_items.xml 中:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/action_search"
        android:title="@string/menu_search"
        android:icon="@drawable/ic_search" />
    <item android:id="@+id/action_settings"
        android:title="@string/menu_settings"
        android:icon="@drawable/ic_add" />
    <item android:id="@+id/action_navigation"
        android:title="@string/menu_navigation"
        android:icon="@drawable/ic_action_navigation_menu" />
</menu>

【讨论】:

    【解决方案2】:

    一开始,感谢您的建议,非常感谢!

    要将 BottomNavigationView 与 AppCompat 活动一起使用,除了 @AnantaRaha 给出的代码之外,我还在 .java 文件中使用了它:

        BottomNavigationView bottomNavigationView = findViewById(R.id.navigation);
        bottomNavigationView.setSelectedItemId(R.id.home);
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.dashboard:
                        startActivity(new Intent(getApplicationContext()
                                , Dashboard.class));
                        overridePendingTransition(0, 0);
                        return true;
                    case R.id.home:
                        return true;
                    case R.id.about:
                        startActivity(new Intent(getApplicationContext()
                                , Aboutt.class));
                        overridePendingTransition(0, 0);
                        return true;
                }
                return false;
            }
        });
    

    overridePendingTransition 有助于消除 Intent 在您使用它时导致的闪烁和小延迟(另一个活动现在立即开始):D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 2019-01-03
      • 2016-06-24
      • 2019-02-25
      • 1970-01-01
      • 2015-02-06
      相关资源
      最近更新 更多