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

Android App开发基础篇—Snackbar的使用

2016-07-29 12:05 239 查看

Android App开发基础篇—Snackbar的使用

引言:

Snackbar是Android Support Design Library库中的一个控件,可以实现与Toast一样的效果,但比Toast更加灵活,可以实现自定义布局,设置点击事件。

使用:

要使用Snackbar,需要先在项目中引入android-support-design库。具体方法如下:

1.使用AndroidStudio:在bulid.gradle(Module:app)的dependencies中添加如下语句:

compile 'com.android.support:design:23.2.0'  //语句后面的23.2.0可能需要自己根据项目的SDK版本进行设置。

2.使用Eclipse:下载android-support-design.jar的jar包,导入项目的libs文件夹。

Snackbar的基本使用:

使用Snackbar需要添加一个容器来容纳Snackbar,官方推荐使用另一个Android Support Design Library库中的控件CoordinatorLayout,使用CoordinatorLayout可以保证让用户通过右滑取消Snackbar。

XML布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android[b]:layout_height="match_parent"
android:orientation="vertical"
tools:context="lyk.snackbartest.MainActivity">

<Button
android:id="@+id/show_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Show Snackbar"
android:textSize="20dp"/>

<Button
android:id="@+id/hide_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/show_button"
android:layout_marginTop="10dp"
android:text="Hide Snackbar"
android:textSize="20dp"/>

<android.support.design.widget.CoordinatorLayout
android:id="@+id/snackbar_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
</android.support.design.widget.CoordinatorLayout>

</RelativeLayout>


在Activity中,获取CoordinatorLayout作为Snackbar的容器,然后调用Snackbar.make(View view,CharSequence text,int duration)方法生成一个Snackbar对象。其中的3个参数:第一个参数view就是用来容纳Snackbar的CoodinatorLayout;第二个参数是显示的文本内容;第三个参数表示Snackbar的显示时长,这个参数有3个值:Snackbar.LENGTH_SHORT、Snackbar.LENGTH_LONG、Snackbar.LENGTH_INDEFINITE,其中SHORT和LONG跟Toast的时长参数一样,INDEFINITE表示长久显示,此时要使Snackbar消失,调用Snackbar.dismiss()方法即可。

代码:

public class MainActivity extends AppCompatActivity {

private CoordinatorLayout mSnackbarContainer;
private Snackbar snackbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.[b]activity_main[/b]);

mSnackbarContainer = (CoordinatorLayout) findViewById(R.id.[b]snackbar_container[/b]);
findViewById(R.id.[b]show_button[/b]).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
snackbar = Snackbar.make(mSnackbarContainer, "SnackbarTest",
Snackbar.[b]LENGTH_INDEFINITE[/b]);
snackbar.show();
}
});
findViewById(R.id.[b]hide_button[/b]).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
snackbar.dismiss();
}
});
}
}


为Snackbar设置点击事件:Snackbar不仅可以实现Toast效果,还可以设置点击事件。通过snackbar.setAction方法,可以为Snackbar设置点击事件。代码如下:

snackbar.setAction("走你", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "测试Snackbar点击事件", Toast.LENGTH_LONG).show();
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: