将 Toast 与 Coordinator 布局和底部应用栏一起使用:Toast 不会显示

问题描述

我想显示 Toast 消息,我的布局是协调器布局,里面有一个底部应用栏。不会显示我的吐司消息。

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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:id="@+id/coordinatorLayoutActivityMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    style="@style/Widget.MaterialComponents.BottomAppBar.Colored">

<!-- Note: a Recycle view also can be used -->
<androidx.core.widget.nestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="100dp"
    android:clipToPadding="false">

    <!-- scrollable content -->

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/tv_main_Activity_test_text"/>

</androidx.core.widget.nestedScrollView>

<com.google.android.material.bottomappbar.BottomAppBar
    android:id="@+id/bottomAppBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    style="@style/Widget.MaterialComponents.BottomAppBar.Colored"
    app:navigationIcon="@drawable/ic_menu_24"
    app:menu="@menu/bottom_app_bar"
    app:hideOnScroll="true"/>

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/ic_add_24"
    app:layout_anchor="@id/bottomAppBar"
    app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"
     />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

主活动

在主活动中,即使我在 create 方法中创建了 Toast,也不会显示 Toast。我猜 Toast 是放在 BottomAppBar 下的。但我不知道如何解决这个问题。

package com.atadarvishnia.bottomappbars;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import com.google.android.material.bottomappbar.BottomAppBar;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

public class MainActivity extends AppCompatActivity {

    private BottomAppBar bottomAppBar;
    private FloatingActionButton fab;
    private CoordinatorLayout coordinatorLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setupViews();
        Toast.makeText(MainActivity.this,"Search clicked!",Toast.LENGTH_SHORT).show();
        bottomAppBar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showSnackBar("Navigation clicked!","ok");
            }
        });

        bottomAppBar.setonMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.menuBottomAppBarSearch:
                        Toast.makeText(MainActivity.this,Toast.LENGTH_SHORT).show();
                        return true;
                    case R.id.menuBottomAppBarMore:
                        Toast.makeText(MainActivity.this,"More clicked!",Toast.LENGTH_SHORT).show();
                        return true;
                    default:
                        return false;
                }
            }
        });

        fab.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this,MainActivity2.class));
            }
        });

    }

    private void setupViews() {
        bottomAppBar = findViewById(R.id.bottomAppBar);
        fab = findViewById(R.id.fab);
        coordinatorLayout = findViewById(R.id.coordinatorLayoutActivityMain);
    }

    private void showSnackBar(String message,String action) {
        int marginSide = 0,marginBottom = 240;
        //create snack bar
        Snackbar snackbar = Snackbar.make(coordinatorLayout,message,Snackbar.LENGTH_LONG);
        snackbar.setAction(action,new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });
        snackbar.setActionTextColor(Color.GREEN);
        //anchor snack bar top of floating action button.
        snackbar.setAnchorView(fab);
        //show snack bar
        snackbar.show();
    }

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)