Material Design学习-----SnackBar
2016-04-26 15:59
120 查看
SnackBar是一个和Toast类似的空间,用于弹出提示作用,但是相比于Toast而已,SnackBar会有一个不错的动画效果,同时当手指完成屏幕中其他操作的时候,SnackBar会立即消失。同时可以为SnackBar设置一个按钮点击事件,效果如下图所示(图片引用:http://www.tuicool.com/articles/BfEbMvB)
而同时SnackBar使用方式也与Toast类似:
以上代码就可以完成Snackbar的显示,同时setAction函数就是为了给Snackbar设置按钮和点击事件,这个是可选内容。
同时另一个方面就是如何修改Snackbar颜色的问题,下面是Snackbar类库中有关的布局文件:
可以发现,其实Snackbar就是两个TextView,但是由于代码的封装性,我们没有办法直接修改其中的样式,这个时候我们可以使用getView()来取得相应的控件并修改其样式:
在实例化Snackbar的时候调用改函数就可以了:
而同时SnackBar使用方式也与Toast类似:
public class SnackBarDemo extends Activity{ private CoordinatorLayout layout; private Button btn; private LinearLayout layout_m; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.snackbar); layout= (CoordinatorLayout) findViewById(R.id.layout); layout_m= (LinearLayout) findViewById(R.id.layout_m); btn= (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Snackbar.make(layout_m,"哈哈哈",Snackbar.LENGTH_SHORT).setAction("action", new View.OnClickListener() { @Override public void onClick(View v) { } }).show(); } }); } }
以上代码就可以完成Snackbar的显示,同时setAction函数就是为了给Snackbar设置按钮和点击事件,这个是可选内容。
同时另一个方面就是如何修改Snackbar颜色的问题,下面是Snackbar类库中有关的布局文件:
<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/snackbar_padding_vertical" android:paddingBottom="@dimen/snackbar_padding_vertical" android:paddingLeft="@dimen/snackbar_padding_horizontal" android:paddingRight="@dimen/snackbar_padding_horizontal" android:textAppearance="@style/TextAppearance.Design.Snackbar.Message" android:maxLines="@integer/snackbar_text_max_lines" android:layout_gravity="center_vertical|left|start" android:ellipsize="end"/> <TextView android:id="@+id/snackbar_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/snackbar_extra_spacing_horizontal" android:layout_marginStart="@dimen/snackbar_extra_spacing_horizontal" android:layout_gravity="center_vertical|right|end" android:background="?attr/selectableItemBackground" android:paddingTop="@dimen/snackbar_padding_vertical" android:paddingBottom="@dimen/snackbar_padding_vertical" android:paddingLeft="@dimen/snackbar_padding_horizontal" android:paddingRight="@dimen/snackbar_padding_horizontal" android:visibility="gone" android:textAppearance="@style/TextAppearance.Design.Snackbar.Action"/> </merge>
可以发现,其实Snackbar就是两个TextView,但是由于代码的封装性,我们没有办法直接修改其中的样式,这个时候我们可以使用getView()来取得相应的控件并修改其样式:
public static void setSnackbarMessageTextColor(Snackbar snackbar, int color) { View view = snackbar.getView(); ((TextView) view.findViewById(R.id.snackbar_text)).setTextColor(color); }
在实例化Snackbar的时候调用改函数就可以了:
Snackbar snackbar = Snackbar.make(container, "SnackbarTest", Snackbar.LENGTH_LONG).setAction("Action", new View.OnClickListener() { @Override public void onClick(View v) { Snackbar snackbar = Snackbar.make(container, "ActionClick", Snackbar.LENGTH_LONG); setSnackbarMessageTextColor(snackbar,Color.parseColor("#FF0000")); snackbar.show(); } }); setSnackbarMessageTextColor(snackbar, Color.parseColor("#FFFFFF")); snackbar.show();
相关文章推荐
- 数据挖掘常见10大问题
- Base64编码与URL编码的不同
- hdu5045
- css设计注意事项
- Java学习eclipse生成jar包
- Navicat 11使用技巧
- nyoj 17 单调递增最长子序列
- 病毒,入侵和网络攻击(摘抄)
- Python常见字符串处理操作
- KindEditor得不到textarea值的解决方法
- Leetcode 11. Container With Most Water
- mysql ERROR 1130: Host ’localhost′ is not allowed to connect to this MySQL server
- 从CMO到龙泉寺弟子:佛法改变人生
- CSS3中盒模型的新增属性overflow
- mac pod 的使用总结
- 三角公式 - 记忆版
- Exercise(6):八皇后
- Android应用中实现手势控制图片缩放的完全攻略
- C# 指定模板 并导出Excel
- RAID级别与规范