【问题标题】:Call navigation icon click in toolbar (android)调用工具栏中的导航图标(android)
【发布时间】:2020-04-25 22:59:03
【问题描述】:

我的代码如下:

setSupportActionBar(toolbar);
toolbar.setNavigationOnClickListener(onClickListener);

和 XML:

<com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:elevation="0dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/app_bar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:paddingStart="0dp"
            android:paddingEnd="12dp"
            app:contentInsetStart="0dp"
            app:navigationIcon="@drawable/ic_menu_black_24dp"
            app:title="@string/app_name" />
    </com.google.android.material.appbar.AppBarLayout>

我想调用单击工具栏的导航图标,但我找不到执行此操作的方法。 我无法调用 onClickListener(null),因为我更改了 onClick 内的图标。

【问题讨论】:

    标签: android call onclicklistener toolbar android-toolbar


    【解决方案1】:

    请尝试将“数字”替换为图标的索引。 (可能是 1-2-3-4 等)

        toolbar.getChildAt(number).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //do whatever you want here
            }
        });
    

    【讨论】:

      【解决方案2】:

      试试这个,

      Toolbar toolbar;
      
      toolbar = findViewById(R.id.toolbar);
      
      setSupportActionBar(toolbar);
      
      @Override
      public boolean onSupportNavigateUp() {
          onBackPressed();
          return true;
      }
      

      【讨论】:

        【解决方案3】:

        您可以为此使用 setNavigationOnClickListener {}。

        // I used private function here, you don't need to.
        private fun onBackArrowPressed() {
            // when user clicked the navigation icon (here is back arrow)
            binding.toolbar.setNavigationOnClickListener {
                // find the nav controller and pop backstack
                findNavController().popBackStack()
            }
        }
        

        Material Components Android Top AppBar

        【讨论】:

        • 请在答案周围添加一些上下文/解释
        猜你喜欢
        • 2018-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-07
        • 2016-03-06
        • 2018-04-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多