在工具栏中调用导航图标点击(Android)

3

以下是我的代码:

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>

我想要调用工具栏导航图标的点击事件,但是我找不到相应的方法。 由于我在onClick方法中改变了图标,所以无法使用onClickListener(null)。
3个回答

1
尝试这个,
Toolbar toolbar;

toolbar = findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

1
请尝试将“number”替换为图标的索引。(可以是1-2-3-4等)
    toolbar.getChildAt(number).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //do whatever you want here
        }
    });

0
你可以使用 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 顶部 AppBar


请在回答周围添加一些上下文/解释。 - rahul.taicho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接