如何防止Snackbar关闭?

Dev*_*ath 21 android material-design android-5.0-lollipop

我正在使用一个名为Snackbar的控件来自第三方库 - github.com/navasmdc/MaterialDesignLibrary.

问题是它会像Toast一样自动关闭.

我想做什么:它应该一直持续到我点击btn

我正在使用的代码片段

new SnackBar(ActSplash.this,
      "Do you want change color of this button to red?",
      "yes", 
       new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              ButtonFlat btn = (ButtonFlat) findViewById(R.id.buttonSnackBar);
             //btn.setTextColor(Color.RED);
        }
}).show();
Run Code Online (Sandbox Code Playgroud)

编辑:

new SnackBar(ActSplash.this,
                                "Do you want change color of this button to red?",
                                "yes", new View.OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                ButtonFlat btn = (ButtonFlat) findViewById(R.id.buttonSnackBar);
                                //btn.setTextColor(Color.RED);
                            }
                        }).setIndeterminate(true)
                                .show();
Run Code Online (Sandbox Code Playgroud)

这显示错误无法解析show()


编辑 - 来自新的安德鲁德DOCS

如何防止android snackbar关闭

Snackbar
                 .make(((ActMedicalRecordDetailNew)getActivity()).getMainContent(), R.string.snackBarNoNetConnectivity, Snackbar.LENGTH_LONG)
                    .setAction(R.string.snackBarTryAgain, new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            Intent intent = getActivity().getIntent();
                            getActivity().finish();
                            startActivity(intent);
                        }
                    })
                    .show();
Run Code Online (Sandbox Code Playgroud)

Bla*_*elt 36

编辑:

Snackbar现在是新的Android支持设计库的一部分.LENGTH_INDEFINITE如果你想无限期地显示它,你可以使用持续时间..您应该删除您正在使用的第三方库.例如.

Snackbar.make(layout, R.string.snackBarNoNetConnectivity, Snackbar.LENGTH_INDEFINITE)
    .show()
Run Code Online (Sandbox Code Playgroud)

老答案

你必须在打电话.setIndeterminate(true)前打电话show()

final SnackBar tmp = new SnackBar(ActSplash.this,
      "Do you want change color of this button to red?",
      "yes", 
       new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              ButtonFlat btn = (ButtonFlat) findViewById(R.id.buttonSnackBar);
             //btn.setTextColor(Color.RED);
        }
});
tmp.setIndeterminate(true);
tmp.show();
Run Code Online (Sandbox Code Playgroud)

  • @PhilipKahn您需要最新的支持设计库才能使用`Snackbar.LENGTH_INDEFINITE`.(22.2.1) (2认同)

小智 14

snackbar.setDuration(Snackbar.LENGTH_INDEFINITE);
Run Code Online (Sandbox Code Playgroud)


Vla*_*lad 5

简单地做

Snackbar.make(layout, "Some text", Snackbar.LENGTH_INDEFINITE)
    .show();
Run Code Online (Sandbox Code Playgroud)