您的位置:首页 > 移动开发 > Android开发

Android SnackBar学习

2016-06-20 16:48 525 查看

Android SnackBar学习

SnackBar是在android 5.0后新出的控件,可以用来替换传统的Toast方式.在一定程度上也可以用来替换Dialog控件.

使用方法

SnackBar在使用上和Toast相近,主要也是使用make方法及show方法.同时可以调用setAction方法,用于生成一个点击事件

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Button snackBar, snackBarAction;
private CoordinatorLayout coordinatorLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
coordinatorLayout = (CoordinatorLayout) findViewById(R.id.container);
snackBar = (Button) findViewById(R.id.snackbar_click);
snackBarAction = (Button) findViewById(R.id.snackbar_action);
snackBar.setOnClickListener(this);
snackBarAction.setOnClickListener(this);
}

@Override
public void onClick(View view) {
if (view.getId() == snackBar.getId()) {
//无action,可以用于替换toast,可以被滑动撤销
Snackbar.make(coordinatorLayout, "this is snack bars", Snackbar.LENGTH_LONG).show();
} else if (view.getId() == snackBarAction.getId()) {
Snackbar.make(coordinatorLayout, "this is snack bars", Snackbar.LENGTH_LONG)
//设置action,可用于点击,如OnclickListener为空,则看不到action
.setAction("action", new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("LOG_PRINT","SnackBar action has click");
}
})
//此处可用于监听SnackBar消失
.setCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
Log.d("LOG_PRINT","event is "+event);
super.onDismissed(snackbar, event);
}
}).show();
}
}
}


以下是于关event的定义



<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.liupeng.study.MainActivity">

<Button
android:id="@+id/snackbar_click"
android:layout_width="0dp"
android:layout_height="51dp"
android:text="snackbar"
app:layout_constraintLeft_toLeftOf="@+id/activity_main"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
app:layout_constraintTop_toTopOf="@+id/activity_main"
android:layout_marginTop="16dp"
app:layout_constraintRight_toRightOf="@+id/activity_main"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintHorizontal_bias="1.0" />

<Button
android:text="snack bar with action"
android:layout_width="0dp"
android:layout_height="50dp"
android:id="@+id/snackbar_action"
app:layout_constraintLeft_toLeftOf="@+id/activity_main"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
app:layout_constraintTop_toBottomOf="@+id/snackbar_click"
android:layout_marginTop="24dp"
app:layout_constraintRight_toRightOf="@+id/activity_main"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp" />
<!-- SnackBar 父view ,可以保证SnackBar被滑动取消,不定义也可以使用-->
<android.support.design.widget.CoordinatorLayout
android:id="@+id/container"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@+id/activity_main"
app:layout_constraintRight_toRightOf="@+id/activity_main"
app:layout_constraintBottom_toBottomOf="@+id/activity_main" />
</android.support.constraint.ConstraintLayout>


以下是效果图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 控件