【发布时间】:2017-05-28 15:13:05
【问题描述】:
我想禁用滑动以消除我尝试过的snackbar 的行为
很多事情对我没有任何作用,任何人都建议我如何实现这一目标,
这是我尝试过的
final Snackbar snackbar = Snackbar
.make(main_content, getResources().getString(R.string.no_internet), Snackbar.LENGTH_INDEFINITE);
snackbar.setActionTextColor(Color.BLACK);
View snackbarView = snackbar.getView();
snackbarView.setBackgroundColor(Color.WHITE);
TextView textView = (TextView) snackbarView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.BLACK);
// textView.setTypeface(fontLight);
snackbar.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View view) {
apiAccess();
}
});
snackbar.show();
这是我尝试过两件事的小吃店代码:
1
((android.support.design.widget.CoordinatorLayout.LayoutParams) snackbar.getView().getLayoutParams()).setBehavior(null);
在snackbar.show(); 方法之后但没有奏效。
2
main_content.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ViewGroup.LayoutParams lp = main_content.getLayoutParams();
if (lp instanceof CoordinatorLayout.LayoutParams) {
((CoordinatorLayout.LayoutParams) lp).setBehavior(new DisableSwipeBehavior());
main_content.setLayoutParams(lp);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
main_content.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
//noinspection deprecation
main_content.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
});
public class DisableSwipeBehavior extends SwipeDismissBehavior<Snackbar.SnackbarLayout> {
@Override
public boolean canSwipeDismissView(@NonNull View view) {
return false;
}
}
在上面的代码中,main_content 是我的 CoordinatorLayout。
【问题讨论】:
-
所以你需要保留它而不禁用或只不允许它使用滑动来禁用它?
-
是的,我想让小吃店保持原样。不想因向左滑动而被解雇@Charuka
-
您需要任何其他操作还是只显示它?如果您只想显示代码较少,则需要输入
-
我只想要 1 个动作“重试”
标签: android swipe-gesture android-snackbar snackbar