【问题标题】:Snackbar action getView()Snackbar 操作 getView()
【发布时间】:2016-07-08 14:16:24
【问题描述】:

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

MainActivity extends AppCompatActivity implements View.OnClickListener

像这样初始化快餐栏:

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

    }
}

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

【问题讨论】:

  • 你能告诉我这个的确切需求吗?
  • 真正需要的是漂亮的代码结构。许多可点击视图由一种方法处理,方法将 View v 作为输入参数,通过获取该视图的 ID,我可以分离我的点击逻辑。但是小吃店缺少 action.getView()

标签: java android snackbar


【解决方案1】:

您可以尝试在小吃店上设置操作。

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

【讨论】:

【解决方案2】:

对于每个SnackbarSnackbar textview 资源 id 是

    android.support.design.R.id.snackbar_text

Snackbar action view 资源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) {

    }
}

【讨论】:

    【解决方案3】:
    v.getId()
    

    总是(保留):

    android.support.design.R.id.snackbar_action
    

    Doc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-09
      • 2016-10-04
      • 2015-09-15
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 2019-05-15
      相关资源
      最近更新 更多