Android Design Support Library(3)- Snackbar的使用
2016-01-13 22:50
651 查看
原创文章,转载请注明 /article/3662959.html
这篇文章介绍下Android Design Support Library中的Snackbar的使用,如果你还不知道怎么使用这个Design Library请参考 /article/3662957.html,Snackbar是一个类似Toast的控件,跟Toast一样可以设置时长,显示文字,但是它比Toast更加灵活,可以响应用户的触摸反馈,配合CoordinatorLayout使用,SnackBar还可以被Swipe手势划走。
看下效果
使用方法
1:普通的Snackbar
第一个参数是父容器View(可以是你的点击控件的View也可以是你Layout最外层的View) ,第二个参数是提示文字,第三个参数是显示时长,可选三个值
Snackbar.LENGTH_SHORT //短时间
Snackbar.LENGTH_LONG //长时间
Snackbar.LENGTH_INDEFINITE //一直存在不消失
2:带按钮点击事件的Snackbar
snackbar.setActionTextColor:设置button文字的颜色
setAction():两个参数分别是button的文字和点击事件
snackbar.dismiss(); 关闭Snackbar的显示
3:定义Snackbar的外观
Snackbar 有个方法 getView (),这样就可以方便的更改Snackbar的背景颜色,透明度和显示位置了
但是想要更改显示文字的颜色和位置应该怎么办呢?不着急看下Snackbar布局文件的源码
从源码中可以看到 TextView的ID是snackbar_text ,Button的ID是 snackbar_action,有了ID就可以方便的更改了
Ok大致的用法就是这样,下面是本篇Snackbar Demo的源码
Layout
MainActivity
这篇文章介绍下Android Design Support Library中的Snackbar的使用,如果你还不知道怎么使用这个Design Library请参考 /article/3662957.html,Snackbar是一个类似Toast的控件,跟Toast一样可以设置时长,显示文字,但是它比Toast更加灵活,可以响应用户的触摸反馈,配合CoordinatorLayout使用,SnackBar还可以被Swipe手势划走。
看下效果
使用方法
1:普通的Snackbar
[code]Snackbar.make(v, "NormalSnackbarShow",Snackbar.LENGTH_SHORT).show();
第一个参数是父容器View(可以是你的点击控件的View也可以是你Layout最外层的View) ,第二个参数是提示文字,第三个参数是显示时长,可选三个值
Snackbar.LENGTH_SHORT //短时间
Snackbar.LENGTH_LONG //长时间
Snackbar.LENGTH_INDEFINITE //一直存在不消失
2:带按钮点击事件的Snackbar
[code] final Snackbar snackbar=Snackbar.make(v, "ActionlSnackbarShow", Snackbar.LENGTH_SHORT); snackbar.setActionTextColor(ContextCompat.getColor(MainActivity.this,android.R.color.holo_blue_light)).setAction("I know.", new View.OnClickListener() { @Override public void onClick(View v) { //关闭 snackbar.dismiss(); } }).show();
snackbar.setActionTextColor:设置button文字的颜色
setAction():两个参数分别是button的文字和点击事件
snackbar.dismiss(); 关闭Snackbar的显示
3:定义Snackbar的外观
Snackbar 有个方法 getView (),这样就可以方便的更改Snackbar的背景颜色,透明度和显示位置了
[code] View view = CusSnackbar.getView(); //设置背景颜色 view.setBackgroundColor(ContextCompat.getColor(MainActivity.this,android.R.color.holo_orange_dark)); //设置透明度 view.setAlpha(0.8f);
但是想要更改显示文字的颜色和位置应该怎么办呢?不着急看下Snackbar布局文件的源码
[code]<merge xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/snackbar_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:paddingTop="@dimen/design_snackbar_padding_vertical" android:paddingBottom="@dimen/design_snackbar_padding_vertical" android:paddingLeft="@dimen/design_snackbar_padding_horizontal" android:paddingRight="@dimen/design_snackbar_padding_horizontal" android:textAppearance="@style/TextAppearance.Design.Snackbar.Message" android:maxLines="@integer/design_snackbar_text_max_lines" android:layout_gravity="center_vertical|left|start" android:ellipsize="end"/> <Button android:id="@+id/snackbar_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/design_snackbar_extra_spacing_horizontal" android:layout_marginStart="@dimen/design_snackbar_extra_spacing_horizontal" android:layout_gravity="center_vertical|right|end" android:paddingTop="@dimen/design_snackbar_padding_vertical" android:paddingBottom="@dimen/design_snackbar_padding_vertical" android:paddingLeft="@dimen/design_snackbar_padding_horizontal" android:paddingRight="@dimen/design_snackbar_padding_horizontal" android:visibility="gone" android:textColor="?attr/colorAccent" style="?attr/borderlessButtonStyle"/> </merge>
从源码中可以看到 TextView的ID是snackbar_text ,Button的ID是 snackbar_action,有了ID就可以方便的更改了
[code] View view = CusSnackbar.getView(); //更改文字颜色 ((TextView)view.findViewById(R.id.snackbar_text)).setTextColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_green_dark)); //更改文字位置 ((TextView)view.findViewById(R.id.snackbar_text)).setGravity(Gravity.CENTER);
Ok大致的用法就是这样,下面是本篇Snackbar Demo的源码
Layout
[code]<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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" tools:context="com.leejz.snackbardemo.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingTop="8dp"> <Button android:id="@+id/btn_Normal_snackbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:text="Normal Snackbar" /> <Button android:id="@+id/btn_Action_snackbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:text="Action Snackbar" /> <Button android:id="@+id/btn_Custom_snackbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" android:text="Custom Snackbar" /> </LinearLayout> </android.support.design.widget.CoordinatorLayout>
MainActivity
[code]package com.leejz.snackbardemo; import android.support.design.widget.Snackbar; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_Normal_snackbar; private Button btn_Action_snackbar; private Button btn_Custom_snackbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_Normal_snackbar = (Button) findViewById(R.id.btn_Normal_snackbar); btn_Action_snackbar = (Button) findViewById(R.id.btn_Action_snackbar); btn_Custom_snackbar = (Button) findViewById(R.id.btn_Custom_snackbar); btn_Normal_snackbar.setOnClickListener(this); btn_Action_snackbar.setOnClickListener(this); btn_Custom_snackbar.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { //普通Snackbar case R.id.btn_Normal_snackbar: Snackbar.make(v, "NormalSnackbarShow", Snackbar.LENGTH_INDEFINITE).show(); break; //点击事件的Snackbar case R.id.btn_Action_snackbar: final Snackbar snackbar = Snackbar.make(v, "ActionlSnackbarShow", Snackbar.LENGTH_SHORT); snackbar.setActionTextColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_blue_light)).setAction("I know.", new View.OnClickListener() { @Override public void onClick(View v) { //关闭 snackbar.dismiss(); } }).show(); break; //自定义Snackbar case R.id.btn_Custom_snackbar: Snackbar CusSnackbar = Snackbar.make(v, "CustomSnackbarShow", Snackbar.LENGTH_SHORT); View view = CusSnackbar.getView(); ((TextView) view.findViewById(R.id.snackbar_text)).setTextColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_green_dark)); ((TextView) view.findViewById(R.id.snackbar_text)).setGravity(Gravity.CENTER); view.setBackgroundColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_orange_dark)); view.setAlpha(0.8f); //Snackbar位置 // ViewGroup.LayoutParams vl = view.getLayoutParams(); // LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(vl.width,vl.height); // ll.gravity = Gravity.TOP; // view.setLayoutParams(ll); CusSnackbar.show(); break; } } }
相关文章推荐
- Android自定义dialog中的EditText无法弹出键盘的解决
- android137 360 双击三击事件
- android animation rotate to specific angle
- android studio获取sha1的值mac版
- ScrollView中嵌套ListView/ExpandableListView显示问题
- Android Binder机制学习计划
- Android--listView的divider分割线样式和边距
- Android Studio 中使用Java 8 特性
- android星星评分自定义控件
- android 初始开发小问题
- android利用xmpp进行即时通信
- Android中怎么用this
- 我的Android进阶之旅------>Android Activity的singleTask加载模式和onActivityResult方法之间的冲突
- Android应用开发中模拟按HOME键效果
- 一些Android大牛的博客链接收集
- android学习项目
- 浅谈Android控件中的ListView优化
- Android客户端与服务器通信方式浅谈
- Android 选择时间,并排序
- Android性能优化典范(四)