【问题标题】:Override design support library behaviour覆盖设计支持库行为
【发布时间】:2015-11-10 16:42:01
【问题描述】:

我正在尝试在满足条件时关闭 Snackbar

snackbar.setAction("Retry", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(isConnected(getApplicationContext())){
                    toggleButtonsState(true);
                    snackbar.dismiss();
                } else {
                    snackbar.show();
                }
            }
        });
        snackbar.show();

但是,Snackbar 实现会在单击操作时自动关闭它。

public Snackbar setAction(CharSequence text, final OnClickListener listener) {
    TextView tv = this.mView.getActionView();
    if(!TextUtils.isEmpty(text) && listener != null) {
        tv.setVisibility(0);
        tv.setText(text);
        tv.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                listener.onClick(view);
                Snackbar.this.dismiss();
            }
        });
    } else {
        tv.setVisibility(8);
        tv.setOnClickListener((OnClickListener)null);
    }

    return this;
}

一般来说,有没有办法修改已编译的 gradle 库以满足我的需求。 IE。删除此行Snackbar.this.dismiss();。我知道我可以搜索源代码并将其放入 libs 文件夹中,然后我可以对其进行修改,但有没有办法做到这一点?

【问题讨论】:

    标签: android android-support-library android-snackbar


    【解决方案1】:

    不幸的是,你不能因为Snackbar 类是最终的并且不能覆盖方法所以它的行为。

    您可以尝试将View.OnTouchListener 设置为Snackbar 视图并防止它仅针对操作视图获取任何触摸事件。我不确定snackBar.getView() 是否会返回包括操作视图在内的整个快餐栏。

    snackBar.getView().setOnTouchListener(new View.OnTouchListener(){
         @Override
         public boolean onTouch (View v, MotionEvent event){
             if(v instanceof Button) {
                //This is the Action view event, do your logic.
                 if(isConnected(getApplicationContext())){
                        toggleButtonsState(true);
                     return false;
                  }
                 return true;
             }
             //not action view, proceed normally
             return false;
          });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 2015-09-04
      相关资源
      最近更新 更多