自定义SnackBar

Material Design是Android 5.0系统的重头戏,并在以后App中将成为一种设计标准,通过导入相关的包,可以使用里面一些有意思的控件,今天先在这里了解一下SnackBar.

本人用的是As进行开发的,只要在gradle脚本加入

compile ‘com.android.support:design:23.3.0‘就可以愉快的写代码了。不说了直接上代码
package com.example.administrator.mysnackbar;

import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    void showSnack(View v){
        Snackbar.make(v,"弹出snack",Snackbar.LENGTH_LONG).show();
    }
}
<?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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="#ffffff"
    android:gravity="center"
    tools:context="com.example.administrator.mysnackbar.MainActivity">

    <Button
        android:id="@+id/bt_show_snack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:background="#ff00ff"
        android:onClick="showSnack"
        android:text="弹出SnackBar"/>
</RelativeLayout>

  运行之后如图:

从代码也可以看出SnackBar和toatse的用法差不多,区别就是原生支持action以及自定义字体颜色等等

例如

showSnack(View v)可以改成如下:
 void showSnack(View v){
        Snackbar.make(v,"弹出snack",Snackbar.LENGTH_LONG).setAction("点我", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"点到我了",Toast.LENGTH_SHORT).show();
            }
        }).setActionTextColor(Color.parseColor("#00f0f0")).show();
    }

效果如上:点击“点我”,可以看到是可以触发的,是不是很简单。但是现实需求总是在不断的改变,如果要改变snackbar的样式,可以看到api并不提供相应的方法,通过查看snackbar
源码可知:
public View getView() {    return mView;}getView()返回一个View,View是SnackbarLayout,包含两个子View
mMessageView = (TextView) findViewById(R.id.snackbar_text);mActionView = (Button) findViewById(R.id.snackbar_action);
mActionView 默认是Gone的,而SnackbarLayout 继承LinearLayout是不是很熟悉,所以我们可以随心所欲的自定义自己snackbar,例子如下:
void showSnack(View v){    Snackbar snackbar = Snackbar.make(v,"弹出snack",Snackbar.LENGTH_LONG).setAction("点我", new View.OnClickListener() {        @Override        public void onClick(View v) {            Toast.makeText(MainActivity.this,"点到我了",Toast.LENGTH_SHORT).show();        }    }).setActionTextColor(Color.parseColor("#00f0f0"));    Snackbar.SnackbarLayout snackbarLayout  = ( Snackbar.SnackbarLayout)snackbar.getView();    snackbarLayout.setBackgroundColor(Color.parseColor("#00fff0"));    snackbar.show();}
结果如下:

可以看到我们可以用LinearLayout的方式自定义自己SnackBar,包括addView等等!
				
时间: 2024-10-14 05:15:52

自定义SnackBar的相关文章

Snackbar使用详解及其相关框架TSnackbar

简述: Snackbar 是 Android design support library 中的一个组件,它的作用和Toast类似,显示吐司,但Snackbar的特别之处在于Snackbar显示的提示信息可以和用户交互,更好地获取用户反馈信息.同时,它显示的吐司带有动画效果,从屏幕下方慢慢展开显示. Goggle官方这样介绍:"SnackBars提供了一个轻量级的反馈操作.他们在屏幕的底部显示一条简短的信息,如果是较大的设备就显示在左下角.SnackBar出现在屏幕中所有其他元素的上方,同一时间

【Android - MD】之Snackbar的使用

Snackbar 是 Android 5.0 新特性--Material Design 中的一个控件,用来代替 Toast ,Snackbar与Toast的主要区别是:Snackbar可以滑动退出,也可以处理用户交互(点击)事件. Snackbar的特点如下: Snackbar会在超时或者用户在屏幕其他地方触摸之后自动消失 可以在屏幕上滑动关闭 出现时不会阻碍用户在屏幕上的输入 不支持输入 屏幕上同时最多只能显示一个Snackbar 如果在屏幕上有一个Snackbar的情况下再显示一个Snack

安卓Android Support Design Library——Snackbar

介绍: Snackbar是Android Support Design Library库支持的一个控件,用于在界面下面提示一些关键信息,跟Toast不同的地方是SnackBar允许用户向右滑动消除它,同时,也允许在SnackBar中设定一个Action,当用户点击了SnackBar里面的按钮的时候,可以进行一些操作,所以,功能绝对是很强大的. 官方推荐使用CoordinatorLayout(另一个Android Support Design Library库支持的控件)容纳.因为使用这个控件,可

Android Design Support Library--简约而不简单的SnackBar

引言 在之前我有提到这一篇Android Design Support Library系列文章是关于SnackBar的,但是由于要用到CoordinatorLayout所以先翻译了一篇相关文章,如果还不了解的可以先看一下Android Design Support Library–使用CoordinatorLayout来处理滚动 ,这一篇我们讲SnackBar,SnackBar其实就是Toast的升级版,他们之间最大的不同就是:SnackBar会对我们的操作提供一个轻量级的反馈,并且可以对点击事

DialogFragment源码分析

目录介绍 1.最简单的使用方法 1.1 官方建议 1.2 最简单的使用方法 1.3 DialogFragment做屏幕适配 2.源码分析 2.1 DialogFragment继承Fragment 2.2 onCreate(@Nullable Bundle savedInstanceState)源码分析 2.3 setStyle(@DialogStyle int style, @StyleRes int theme) 2.4 onActivityCreated(Bundle savedInstan

Adapter(自定义适配器)Listview

Android系统中自带的SimpleAdapter,有很多局限,所以很多用自定义的 //系统的SimpleAdapter a.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical&q

轻量级控件SnackBar应用&amp;源码分析

前言 SnackBar是Android Support Design Library库支持的一个控件,它在使用的时候经常和CoordinatorLayout一起使用,它是介于Toast和Dialog之间的产物,属于轻量级控件很方便的提供提示和动作反馈,有时候我们需要这样的控件,和Toast一样显示便可以消失,又想这个消息提示上进行用户的反馈.然而写Dialog只能通过点击去取消它,所以SnackBar的出现更加让界面优雅. Part 1.SnackBar的常规使用 Snackbar snackb

安卓Design包之超强控件CoordinatorLayout与SnackBar的简单使用

在前面的Design中,学习使用了TabLayout,NavigationView与DrawerLayout实现的神奇效果,今天就带来本次Design包中我认为最有意义的控件CoordinatorLayout. 当然还有SnackBar,不过他在实际运用中一般都是和CoordinatorLayout搭配使用的. 先说下SnackBar,这个控件其实我觉得和Toast没什么差别,不过功能上的确有增强.这个控件可以通过setAction方法设置类似按钮一样的东西.而且这个东西可以设置多个. 重点还是

Android SnackBar:你值得拥有的信息提示控件

概述: Snackbar提供了一个介于Toast和AlertDialog之间轻量级控件,它可以很方便的提供消息的提示和动作反馈. 有时我们想这样一种控件,我们想他可以想Toast一样显示完成便可以消失,又想在这个信息提示上进行用户反馈.写Toast没有反馈效果,写Dialog只能点击去dismiss它.是的,可能你会说是可以去自定义它们来达到这样的效果.而事实上也是这样. 实现: 其实要实现这样的一个提示窗口,只是针对自定义控件来说,应该是So easy的,不过这里我们想着会有一些比较完善的功能