android material design之Snackbar(二)
2016-06-15 11:18
651 查看
我的项目源码托管地址:点击打开我的项目源码地址
先说一下比较轻量级的控件,原来的话用来做提示信息的一般是toast,而且他可以在所有的view的顶层显示,包括键盘,不依赖window,而且无焦点位置可自定义,那么来说一下新的snackbar,这个控件有些限制,可以看一下源码,这里不细说了
先上代码
感觉github上有个好的项目:https://github.com/1181631922/TSnackBar
补充,忘了上xml的代码,现在补上
activity_snack_bar.xml
content_snack_bar.xml
这里继承的base,而且scrollview用的v4包中的,后文会讲到为何用这个
先说一下比较轻量级的控件,原来的话用来做提示信息的一般是toast,而且他可以在所有的view的顶层显示,包括键盘,不依赖window,而且无焦点位置可自定义,那么来说一下新的snackbar,这个控件有些限制,可以看一下源码,这里不细说了
先上代码
package com.fanyafeng.materialdesign.activity; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.Toast; import com.fanyafeng.materialdesign.BaseActivity; import com.fanyafeng.materialdesign.R; public class SnackBarActivity extends BaseActivity { private Snackbar snackbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_snack_bar); title = "测试snackbar"; FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } @Override public void onClick(View v) { super.onClick(v); switch (v.getId()) { case R.id.btnActionSnackbar: Snackbar.make(v, "提示用户的消息", Snackbar.LENGTH_LONG) .setAction("Action", new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SnackBarActivity.this, "Action响应", Toast.LENGTH_SHORT).show(); } }).show(); break; case R.id.btnOneActionSnackbar: Snackbar snackbar = Snackbar.make(v, "提示用户的消息", Snackbar.LENGTH_LONG); snackbar.setAction("Confirm", new View.OnClickListener() { @Override public void onClick(View v) { } }); snackbar.getView().setBackgroundColor(getResources().getColor(R.color.colorPrimary)); snackbar.show(); break; case R.id.btnTwoActionSnackbar: Snackbar.make(v, "提示用户的消息", Snackbar.LENGTH_LONG) .setAction("Confirm", new View.OnClickListener() { @Override public void onClick(View v) { } }).setActionTextColor(getResources().getColor(R.color.colorPrimary)).show(); break; case R.id.btnCustomSnackbar: // TODO: 16/6/13 有坑,小心使用 snackbar = Snackbar.make(getWindow().getDecorView(), "提示用户的消息提示用户的消息提示用户的消息提示用户的消息提示用户的消息提示用户的消息提示用户的消息提示用户的消息", Snackbar.LENGTH_LONG); snackbar.setAction("Confirm", new View.OnClickListener() { @Override public void onClick(View v) { } }); snackbar.getView().setBackgroundColor(getResources().getColor(R.color.colorPrimary)); snackbar.getView().setX(100); snackbar.show(); break; } } }这里主要说一下使用规范和坑,snackbar一般情况下是一行字加一个按钮但是样式是字的样式如果超过两行默认点点点,而且actiion默认只可以设置一个,代码中标注的有坑的地方要注意,如果不更改values中的style的话不建议使用getwindow().getDecorView()这个作为view,一会上图大家就知道了,再有就是默认的话支持更改x轴的样式,不支持更改y轴,我感觉这和侧滑删除有关,有键盘的地方强烈建议不要去使用这个控件,如果大家细心的话可以发现微信好多页面开始使用这个控件了,下面来看一下演示效果
感觉github上有个好的项目:https://github.com/1181631922/TSnackBar
补充,忘了上xml的代码,现在补上
activity_snack_bar.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.fanyafeng.materialdesign.activity.SnackBarActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_snack_bar" /> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="@drawable/add" app:backgroundTint="@android:color/holo_blue_dark" /> </android.support.design.widget.CoordinatorLayout>
content_snack_bar.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView 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: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" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.fanyafeng.materialdesign.activity.SnackBarActivity" tools:showIn="@layout/activity_snack_bar"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btnActionSnackbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onClick" android:text="有action的snackbar" android:textColor="@android:color/holo_blue_dark" /> <Button android:id="@+id/btnOneActionSnackbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onClick" android:text="自定义颜色action的snackbar" android:textColor="@android:color/holo_blue_dark" /> <Button android:id="@+id/btnTwoActionSnackbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onClick" android:text="自定义颜色action的snackbar" android:textColor="@android:color/holo_blue_dark" /> <Button android:id="@+id/btnCustomSnackbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="onClick" android:text="custom snackbar" android:textColor="@android:color/holo_blue_dark" /> </LinearLayout> </android.support.v4.widget.NestedScrollView>
这里继承的base,而且scrollview用的v4包中的,后文会讲到为何用这个
相关文章推荐
- CoordinatorLayout与滚动的处理
- Material Design之FloatingActionButton的使用
- Android Design Support Library 中控件的使用简单介绍(一)
- 实现Material风格的滑动刷新Swipe to Refresh
- 运用layerlist在5.0以下的android上实现material design的阴影效果
- Android 5.0以下使用Material Design 特性
- TabLayout代替PagerSlidingTabScrip or viewpagerIndicator
- TabLayout 简单实现底部图标文字导航,实现滑动底部变化效果
- 创建Material Design风格的Android应用--应用主题
- Android Material Design ProgressBar 使用经验(导入,颜色自定义等)
- Android Material Design I-基础知识
- Android Material Design II-自定义动画
- 使用TextInputLayout分分钟构造一个酷炫登录框架
- TextView设置为material design要求的0.87 0.54的简单方法
- Android Material Design之Toolbar与Palette实践
- Android中Snackbar的介绍以及使用
- 有关Material Design新特性的详解。
- SnackBar的基本使用
- Android SnackBar:你值得拥有的信息提示控件
- 一款开源的Android图片搜索APP