android badge xml文件,ToolBar MenuItem 实现 Badge 数字提醒
ToolBar MenuItem 实现 Badge 数字提醒 需要以下几个步骤:
自定义 ActionProvider
ToolBar 自定义 menu
ToolBar 右侧menu添加角标
效果预览
数字提醒.png
自定义布局,要显示的BadgeView( menu_badge_provider.xml )
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?actionBarItemBackground">
android:id="@+id/iv_icon"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:scaleType="center"
android:src="@drawable/ic_file_download_white_24dp"/>
android:id="@+id/tv_badge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_margin="3dp"
android:background="@drawable/shape_circle_red"
android:gravity="center"
android:text="0"
android:textColor="@android:color/white"
android:textSize="12sp"/>
其中shape_circle_red是红色的圆形背景(shape_circle_red.xml)
android:shape="oval">
android:width="20dp"
android:height="20dp" />
自定义ActionProvider
public class BadgeActionProvider extends ActionProvider {
private ImageView mIvIcon;
private TextView mTvBadge;
private View.OnClickListener mOnClickListener;
public BadgeActionProvider(Context context) {
super(context);
}
@Override
public View onCreateActionView() {
//读取support下Toolbar/ActionBar的高度,为了让这个Menu高和宽和系统的menu达到一致。
int size = UiUtils.getDimens(android.support.design.R.dimen.abc_action_bar_default_height_material);
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(size, size);
View view = LayoutInflater.from(getContext())
.inflate(R.layout.menu_badge_provider, null, false);
view.setLayoutParams(params);
mIvIcon = view.findViewById(R.id.iv_icon);
mTvBadge = view.findViewById(R.id.tv_badge);
view.setOnClickListener(new BadgeMenuClickListener());
return view;
}
/**
* 设置图标。
*
* @param icon drawable 或者mipmap中的id。
*/
public void setIcon(@DrawableRes int icon) {
mIvIcon.setImageResource(icon);
}
/**
* 设置显示的数字。
*
* @param i 数字。
*/
public void setBadge(int i) {
mTvBadge.setText(Integer.toString(i));
}
/**
* 设置文字。
*
* @param i string.xml中的id。
*/
public void setTextInt(@StringRes int i) {
mTvBadge.setText(i);
}
/**
* 设置显示的文字。
*
* @param i 文字。
*/
public void setText(CharSequence i) {
mTvBadge.setText(i);
}
public void setOnClickListener(View.OnClickListener onClickListener) {
mOnClickListener = onClickListener;
}
private class BadgeMenuClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
if (mOnClickListener != null) {
mOnClickListener.onClick(v);
}
}
}
}
使用自定义的ActionProvider及自定义menu(toolbar_menu.xml)
xmlns:app="http://schemas.android.com/apk/res-auto">
android:id="@+id/action_download"
android:title=""
app:actionProviderClass="com.wuc.store.widgets.BadgeActionProvider"
app:showAsAction="always"/>
menu的item有一个app:actionProviderClass属性,用这个属性就可以自定义在这里显示的内容(View),这个属性的值是一个完整的类名,如"com.wuc.store.widgets.BadgeActionProvider”。
在代码中使用自定义menu
private BadgeActionProvider mBadgeActionProvider;
private void initToolBar() {
//ToolBar 初始化 menu
mToolBar.inflateMenu(R.menu.toolbar_menu);
MenuItem menuItem = mToolBar.getMenu().findItem(R.id.action_download);
mBadgeActionProvider = (BadgeActionProvider) MenuItemCompat.getActionProvider(menuItem);
mBadgeActionProvider.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtils.showShort("下载管理");
}
});
}
android badge xml文件,ToolBar MenuItem 实现 Badge 数字提醒相关推荐
- android xml文件放在哪里,android 创建 xml文件
android创建xml文件的方法. 要操作android的外部存储,所以要在AndroidManifest.xml文件中添加权限. 首先要创建一个XmlSerialize对象. 并创建一个文件,并打 ...
- android中XMl文件的读取
废话不多说了直接上代码: 新建一个Xml文件用于读取: test.xml <Languages cat="1"><lan id="1"> ...
- android本地xml文件怎么打开,android 打开本地文件
首先要知道的是,Android 打开本地文件是根据类型打开的,也就是根据文件的 MIME 类型来确定 如果不知道是什么类型,那就是 : */* 类型匹配表: private static final ...
- android中xml文件的生成与读取(Pull)
1.android中是采用Xml文件序列化器生成Xml文件的, //1得到一个xml文件的序列化器(生成器) XmlSerializer serializer=Xml.newSerializer(); ...
- Android开发--XML文件解析
开发者一般会在XML文件中定义控件,其中肯定包含控件的一些属性,下面就对这些属性做一些简单的介绍: 1)android:id---这个属性是为控件提供一个标识或者是对一个控件采用引用 2)androi ...
- android 在xml文件中引用自定义View
在xml中引用自定义view 方法一: [java] view plaincopy <com.test.copytext.CopyText android:layout_width=" ...
- Android --- AndroidManifest.xml文件内容详细介绍
文章目录 1.android:label="@string/app_name" 2. android:icon="@mipmap/ic_launcher"与an ...
- Android生成Xml文件
我们在开发的过程中,有时会用到将一些数据保存到xml文件中,在Android中给我们提供了xml序列化来帮我们创建一个xml文件,这里我用两种方式来创建xml文件. 一.使用字符串拼接的方式来创建 二 ...
- Android Studio xml文件中的布局预览视图
操作系统:Windows 10 x64 IDE:Android Studio 3.3.1 更新了Android Studio之后,xml文件中的布局预览视图变得如此简洁! 原因是没有勾选Show La ...
最新文章
- 负载均衡环境中和如何设置Expires和Etag
- golang 项目的目录结构
- mysql linux版安装
- Flomaster 2020中文版
- python time.time和time.clock_Python中time.clock和 time.time的对比探究
- android socket io和服务器_Java socket通讯服务器和客户端教学版
- python raise函数_Python raise用法
- linux之uniq命令
- [vue] 说说你对v-clock和v-pre指令的理解
- 何小鹏谈“小米造车”:我们要为勇敢者鼓掌
- 佳能c3020维修模式 白电平调整_天禹/TY流量计指示针不动维修附近厂家
- python爬虫案例_Python“豆瓣电影TOP250爬虫案例”详解
- sap hana安装教程
- 《黑马QT视频教程》2020.7.31学习日记
- C语言 车辆出租管理系统
- jquery 蔚蓝网
- 【Asan】新鲜货:使用ASan检测内存越界问题
- cannot be cast to com.xxx.xxx.model.User] with root cause
- 什么百度霸屏?百度霸屏是什么意思?
- SVN服务器管理工具——VisualSVN Server Manager
热门文章
- Python:requests + bmc开机、关机、优雅重启、强制重启
- 超声探头【信号延迟时间】问题求教
- IR2103使用实例
- 课程设计是计算机科学与技术专业的一门,计算机107编译原理课程设计.doc
- 如何取得某月的最后一天?
- NEH启发式算法+Tabu搜索算法
- Saliency as Evidence: Event Detection with Trigger Saliency Attribution(ACL2022)
- IDEA亮暗两种风格转换
- Pcap 数据包捕获格式详解
- 【深入理解函数式编程】stream流式提取字符串中数字