Snackbar提供了关于操作的轻量级的反馈。它可以从屏幕底部展示一个简短的消息,与Toast相似,但是它更灵活和功能更加强大。
当它显示一段时间后或者用户与屏幕交互时,它会自动消失;
可以包含一个动作action;
Snackbar出现在屏幕所有其他元素之上,同一时间内只有一个Snackbar显示。
源码下载 喜欢的朋友点个赞吧
当它显示一段时间后或者用户与屏幕交互时,它会自动消失;
可以包含一个动作action;
Snackbar出现在屏幕所有其他元素之上,同一时间内只有一个Snackbar显示。
我们只需要在AS中添加引用即可:
compile 'com.android.support:design:23.3.0'
使用Snackbar
activity_main.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:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:onClick="createSnackbar"android:text="snackba测试"android:layout_width="match_parent"android:layout_height="wrap_content"/><android.support.design.widget.CoordinatorLayoutandroid:id="@+id/container"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"/></RelativeLayout>
MainActivity
package com.example.administrator.mysnackbar;
import android.graphics.Color;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {private CoordinatorLayout container;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);container = (CoordinatorLayout) findViewById(R.id.container);}public static void setSnackbarMessageTextColor(Snackbar snackbar, int color) {View view = snackbar.getView();((TextView) view.findViewById(R.id.snackbar_text)).setTextColor(color);}public void createSnackbar(View v) {Snackbar snackbar= Snackbar.make(container,"SnackbarTest", Snackbar.LENGTH_LONG).setAction("Action", new View.OnClickListener() {@Overridepublic void onClick(View v) {Snackbar.make(container,"ActionClick",Snackbar.LENGTH_LONG).show();}});setSnackbarMessageTextColor(snackbar, Color.parseColor("#ff6699"));snackbar.show();}}
但是如何设置Snackbar的消息文字的颜色以及Action文字的颜色呢?
对于Action可以通过Snack的bar的公开APIsnackbar.setActionTextColor(int color)设置,但是使用的时候不太好用,但是没有找到设置消息文字颜色的API,但是在查看Snackbar.class的时候找到了一个方法:
public View getView() {return this.mView;}
getView()返回的mView就是SnackbarLayout实例,这个类的布局最终是layout_snackbar_include.xml
因此我们可以写下面的帮助方法实现设置消息文本的颜色。
public static void setSnackbarMessageTextColor(Snackbar snackbar, int color) {View view = snackbar.getView();((TextView) view.findViewById(R.id.snackbar_text)).setTextColor(color);
}
源码下载 喜欢的朋友点个赞吧