在Android中单击除操作按钮以外的其他按钮时关闭小吃栏

时间:2019-07-15 09:49:29

标签: android snackbar

我使用代码显示小吃店

Snackbar.make(rootView, mMessage, Snackbar.LENGTH_LONG)
                .make(rootView, mMessage, Snackbar.LENGTH_INDEFINITE)
                .setAction("Action", null)
                .show();

此快餐栏始终显示在屏幕上

我要做什么

  • 一旦它一直显示在屏幕上,当我单击时如何将其关闭 在与快餐栏操作按钮不同的视图上
  • 有可能

4 个答案:

答案 0 :(得分:0)

您可以通过保留对该快餐栏实例的引用来做到这一点:

val snackbar = Snackbar.make(rootView, mMessage, Snackbar.LENGTH_LONG)
                .make(rootView, mMessage, Snackbar.LENGTH_INDEFINITE)
                .setAction("Action", null)
                .show();

现在,只要您想关闭它,只需致电.dismiss(),就您而言:

theOtherButton.setOnClickListener { snackbar.dismiss() }

答案 1 :(得分:0)

mySnackbar = Snackbar.make(rootView, mMessage, Snackbar.LENGTH_LONG)
                .make(rootView, mMessage, Snackbar.LENGTH_INDEFINITE)
                .setAction("Action", null);
mySnackbar.show();

在此之后(在其他视图的onClickListener中):

mySnackbar.dismiss();

答案 2 :(得分:0)

只需使用 yourSnackbar.dismiss();

答案 3 :(得分:0)

<块引用>

你可以用 InkWell 包围:

private String getBMPAppendedData(DataInputStream in) {

        StringBuilder message = new StringBuilder();

        try {
            // Read the fileType : always 0x4d42 = "BM"
            in.readShort();
            // Read the file size
            byte[] fileSizeBytes = new byte[4];
            in.readFully(fileSizeBytes);

            // Read bytes in the loop 
            loop () {
            in.readByte();
            }

            // Read appended byte by byte if present
            boolean areSecretDataPresent = true;

            while (areSecretDataPresent) {
                try {

                    byte b = in.readByte();
                    message.append(String.format("%02X", b));

                } catch (Exception e) {

                    areSecretDataPresent = false;
                }
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }

        return message.toString();
    }