Snackbar动作getView()

时间:2016-03-21 21:16:51

标签: java android snackbar

在我的Activity中我实现了OnClickListener接口

MainActivity extends AppCompatActivity implements View.OnClickListener

init snackbar就像这样:

snackbar = Snackbar.make(view, R.string.msg, Snackbar.LENGTH_LONG);
snackbar.setAction(R.string.action_undo, this);

但我无法在实现的OnClickListener接口方法

上处理它
@Override
public void onClick(View v) {
    // this not work!
    // snackbar id is different from snackbar action id
    if (v.getId() == snackbar.getView().getId()) {

    }
}

有人知道如何从小吃店获取行动视图吗?

3 个答案:

答案 0 :(得分:8)

对于每个SnackbarSnackbar textview资源ID为

    android.support.design.R.id.snackbar_text

Snackbar操作视图资源ID为

    android.support.design.R.id.snackbar_action

如果我正确理解了您的问题,您希望获得Snackbar操作资源ID。如上所述,你可以很容易地得到它,在onClick()中,你可以像 -

一样使用它
@Override
public void onClick(View v) {

    if (v.getId() == android.support.design.R.id.snackbar_action) {

    }
}

答案 1 :(得分:1)

v.getId()

总是(保留):

android.support.design.R.id.snackbar_action

Doc

答案 2 :(得分:0)

您可以尝试在快餐栏上设置操作。

View.OnClickListener snackbarClickListener = new View.OnClickListener() {
         @Override
         public void onClick(View v) {

         }
     };

snackbar = Snackbar.make(view, R.string.msg, Snackbar.LENGTH_LONG);
snackbar.setAction(R.string.action_undo, snackbarClickListener);