Android Material Design的FloatingActionButton,Snackbar和CoordinatorLayout
如果是为了兼容低版本的Android系统,则需要引用Android Material Design的扩展支持库,我在之前的一篇文章张,较为详细的说明了如何导入Android Material Design依赖的库:android-support-v7-appcompat和design库,文章链接地址:http://www.cnblogs.com/zzw1994/p/5012475.html
Android Material Design的FloatingActionButton是一个“悬浮”的按钮。Snackbar有一些类似于Android过去的Toast,但有很多自己独特的特点(比如支持选项事件,选择事件键等)。CoordinatorLayout是一个新的布局,实现在布局上各个组件之间的协调。
现在给出一个例子,对以上三个组件的使用加以说明:
activity_main.xml:
- <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <ListView
- android:id="@android:id/list"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- <android.support.design.widget.FloatingActionButton
- android:id="@+id/floatingActionButton"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="right|bottom"
- android:layout_marginBottom="10dip"
- android:layout_marginRight="10dip"
- android:src="@drawable/ic_launcher"
- app:backgroundTint="#e57373"
- app:borderWidth="10dp"
- app:elevation="10dip"
- app:fabSize="normal"
- app:pressedTranslationZ="10dp"
- app:rippleColor="#c62828" />
- </android.support.design.widget.CoordinatorLayout>
MainActivity.java
- package com.zzw.testdesign_coordinatorlayout;
- import java.util.ArrayList;
- import android.app.Activity;
- import android.app.ListActivity;
- import android.os.Bundle;
- import android.support.design.widget.FloatingActionButton;
- import android.support.design.widget.Snackbar;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.ArrayAdapter;
- import android.widget.ListView;
- import android.widget.Toast;
- public class MainActivity extends ListActivity {
- private ArrayList<String> data = null;
- private ArrayAdapter<String> adapter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- data = new ArrayList<String>();
- adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
- setListAdapter(adapter);
- FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.floatingActionButton);
- fab.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- int len = data.size();
- adapter.add("添加数据-->" + len);
- adapter.notifyDataSetChanged();
- }
- });
- // listView.setOnItemClickListener(new OnItemClickListener() {
- //
- // @Override
- // public void onItemClick(AdapterView<?> arg0, View view, final int position, long id) {
- //
- // Snackbar.make(view, "选择数据" + position + "?", 1).setAction("是", new OnClickListener() {
- //
- // @Override
- // public void onClick(View v) {
- // Toast.makeText(getApplicationContext(), "选择了" + position, 1).show();
- // }
- // }).show();
- // }
- // });
- }
- @Override
- public void onListItemClick(ListView l, View v, final int position, long id) {
- final Activity activity = this;
- Snackbar.make(v, "选择数据 " + position + " ?", Snackbar.LENGTH_SHORT).setAction("是", new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Toast.makeText(activity, "选择了 " + position, Toast.LENGTH_SHORT).show();
- }
- }).show();
- }
- }
需要说明的一点是,假设将activity_main.xml布局文件最外层的布局改写成FrameLayout,那么,当选择ListView中某一项时候,弹出的Snackbar将会遮掩住FloatingActionButton。因此使用CoordinatorLayout可以使Snackbar和FloatingActionButton协调工作,不会出现遮掩的问题。
有的会出现java.lang.reflect.InvocationTargetException,解决方案:http://www.cnblogs.com/zzw1994/p/5012467.html
Android Material Design的FloatingActionButton,Snackbar和CoordinatorLayout的更多相关文章
- Android Material Design 系列之 SnackBar详解
SnackBar是google Material Design提供的一种轻量级反馈组件.支持从布局的底部显示一个简洁的提示信息,支持手动滑动取消操作,同时在同一个时间内只能显示一个SnackBar. ...
- Android Material Design:基于CoordinatorLayout实现向上滚动导航条ToolBar滚出、向下滚动导航条滚出
activity_main.xml: <android.support.design.widget.CoordinatorLayout xmlns:android="http://sc ...
- Android Material Design 兼容库的使用
Android Material Design 兼容库的使用 mecury 前言:近来学习了Android Material Design 兼容库,为了把这个弄懂,才有了这篇博客,这里先推荐两篇博客: ...
- Android Material Design简单使用
吐槽 作为一个 Android developer,没有什么比拿着 UI 设计的一堆 iOS 风格的设计 来做需求更恶心的了,基本所有空间都要照着 iOS 来画一遍,Material Design 辣 ...
- Android Material Design NavigationView 及 Palette 颜色提取器
DrawerLayout + NavigationView DrawerLayout布局,通常在里面添加两个子控件,程序主界面添加到NavitagionView前面. <android.supp ...
- Material Design之FloatingActionButton的使用
FloatingActionButton是继承至ImageView,所以FloatingActionButton拥有ImageView的全部属性. CoordinatorLayout能够用来配合Flo ...
- Android Material Design(一)史上最全的材料设计控件大全
主要内容: 本文将要介绍Material design和Support library控件,主要包括TextInputLayout.SwitchCompat.SnackBar.FloatingActi ...
- Android Material design
1.Material Design:扁而不平 2.Android Support Design 库 之 Snackbar使用及源码分析 3.十大Material Design开源项目,直接拿来用!
- Material Design学习-----FloatingActionButton
FloatingActionButton是悬浮操作按钮,它继承自imageview,所以说它具备有imageview所有的方法和属性.与其他按钮不同的是,FloatingActionButton默认就 ...
随机推荐
- 亚马逊副总裁谈Marketplace平台的个性化服务
说到个性化,亚马逊无疑是挖掘与利用数据为消费者打造个性化网购体验的先驱之一.而现在,几乎所有的公司和网站都在利用更加个性化的推荐算法为用户提供更好的购物和浏览体验. 亚马逊近年来尤其重视将其个性化特性 ...
- iOS 中的加密方式
iOS 中的加密方式 1 加密方式主要有: Base64,MD5,RSA,DES,AES,钥匙串存储,Cookie 2 各加密方式的比较 2.1 Base64 2.1.1 基本原理:采用64个基本的 ...
- EL 标准格式时间 转换成 常用时间yyyy-MM-dd
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%><fmt:format ...
- cordova在app内部指定浏览器打开链接插件:cordova-plugin-inappbrowser
原文网址:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/cordova-plugin-inappbrowser/ 要想App里边的 ...
- C#导出数据至excel模板
开源分享最近一个客户要做一个将数据直接输出到指定格式的Excel模板中,略施小计,搞定 其中包含了对Excel的增行和删行,打印预览,表头,表体,表尾的控制 using System; using S ...
- 关于CSS的只言片语
这段时间做了一个简单的页面,借机又重温了一下CSS的相关知识,现总结一下: 工欲善其事必先利其器,让我们先做一点准备工作 1.在页面添加: <meta http-equiv="x-ua ...
- YuXi-钰玺博客
本博客将与YuXi-钰玺博客进行同步更新! YuXi-钰玺博客:www.studenty.cn
- sql 了解
char,varchar,nvarchar区别 类型 长度 使用说明 长度说明 char(n) 固定长度 索引效率高 程序里面使用trim去除多余的空白 n 必须是一个介于 1 和 8,000 之间 ...
- OC Protocol----协议
类似Java的泛型与接口的结合体,用于类型的<>中,可以多继承(按照OC的说法叫遵从某些协议) 1.定义协议 @protocol Client <NSObject> -(voi ...
- text-overflow:ellipsis; 使用
ul li{ height:25px; line-height:25px; width:200px; overflow:hidden; white-space:nowrap;-moz-text-ove ...