Int*_*ate 10 android android-snackbar
我的appcompat活动中有一个小吃吧.它有一个按钮OK,可以解开零食吧.它正在工作.但是我不能在轻扫(左到右)时忽略小吃吧.
以下是我的小吃吧代码....
final Snackbar snackbar = Snackbar
.make(view, "Error Message", Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View view) {
snackbar.dismiss();
}
});
snackbar.show();
Run Code Online (Sandbox Code Playgroud)
编辑1
我的相对布局作为我的活动的XML布局中的父布局.
Ash*_*mar 28
Snackbar需要一个CoordinatorLayout作为其根布局或一些位于其上面,以执行其各种操作,如轻扫以解除.您需要在布局层次结构中具有某些位置.
此外,我们在Snackbar.make()方法中传递的视图用于在视图层次结构中的某些位置搜索CoordinatorLayout.该方法从此视图遍历到根视图,以查找CoordinatorLayout,通过它可以显示快餐栏并执行其动画和操作.
因此,尝试将根布局替换为CoordinatorLayout,您的问题将得到解决.
小智 5
作为对Ashwani Kumar回答的参考。我看到Intimate询问是否有办法用 LinearLayout 实现这一点。很简单,用带有match_parentinandroid:layout_height和android:layout_width属性的 CoordinatorLayout 包裹你原来的 LinearLayout
。
这将保留您原来的安排,并仍然确保 Snackbar 是可滑动的。
Snackbar 现在看起来像这样:
对于片段 -
Snackbar.make(getView(), "Error Message", Snackbar.LENGTH_INDEFINITE);
Run Code Online (Sandbox Code Playgroud)
对于活动 -
Snackbar.make(this.findViewById(android.R.id.content), "Error Message", Snackbar.LENGTH_INDEFINITE);
Run Code Online (Sandbox Code Playgroud)
假设您使用 CoordinatorLayout 包装了整个布局,这是根布局。
我编写了一个库,即使不提供 CoordinatorLayout,它也支持滑动以消除行为。用户可以向左或向右滑动以关闭它(您最初只能向右滑动)。它还包括 progressBar 和其他东西。试试https://github.com/tingyik90/snackprogressbar。
您需要做的就是创建一个 SnackProgressBar 并允许滑动关闭。示例代码:
SnackProgressBar messageType = new SnackProgressBar(
SnackProgressBar.TYPE_MESSAGE, "Your message")
.setSwipeToDismiss(true)
Run Code Online (Sandbox Code Playgroud)