如何防止Snackbar关闭?

时间:2015-04-28 13:57:45

标签: android android-5.0-lollipop material-design

我在第三方库中使用名为Snackbar的控件 - github.com/navasmdc/MaterialDesignLibrary。

问题是它会自动关闭,就像Toast一样。

我要做的是什么:它应该一直持续到我点击LinearLayoutManager linearLayoutM = new LinearLayoutManager(getActivity()); firstItem = linearLayoutM.findFirstVisibleItemPosition();

我使用的代码段

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();

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

编辑 - 来自新的ANDROID DOCS

如何阻止Android小吃栏关闭

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();

3 个答案:

答案 0 :(得分:33)

修改

Snackbar现在是新Android Support Design library的一部分。如果您想无限期地显示它,可以使用LENGTH_INDEFINITE作为持续时间。 。您应该删除您正在使用的第三方库。例如

Snackbar.make(layout, R.string.snackBarNoNetConnectivity, Snackbar.LENGTH_INDEFINITE)
    .show()

旧答案

在致电.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();

答案 1 :(得分:14)

snackbar.setDuration(Snackbar.LENGTH_INDEFINITE);

答案 2 :(得分:3)

简单地做

Snackbar.make(layout, "Some text", Snackbar.LENGTH_INDEFINITE)
    .show();