今天的几个目标: 1. 自定义ActionProvider 2. Toolbar ActionBar自定义Menu 3. Toolbar ActionBar 右侧Menu添加角标(Toolbar ActionBar Menu添加小红点) 源代码在文章末尾。 ——————————————————————————– 效果预览 自定义Menu后不影响原生MD的任何效果。可以通过外部来控制显示的文字和颜色等属性。 需求描述与分析 通常我们会自定义Titlebar,可以实现很多自定义的效果。但是后来Toolbar出来后实在太好用了,于是乎我们都使用了Toolbar但是我们要给右侧的Menu B 在Android开发中,有时我们需要对应用的界面进行个性化定制,以满足特定的需求。今天我们将讨论如何在Android中自定义ActionProvider并将其应用于ToolBar的Menu,同时实现右侧Menu按钮上的小红点角标。这个功能常见于通知未读状态的显示,增加用户界面的交互性。 我们的目标是: 1. 创建自定义ActionProvider 2. 配置ToolBar的ActionBar自定义Menu 3. 在ToolBar的右侧Menu项添加小红点角标 在Android中,我们通常使用menu.xml文件定义菜单项,但为了实现带有小红点的自定义效果,我们需要利用`android:actionProviderClass`属性来自定义Menu的内容。ActionProvider是一个接口,允许我们在菜单项上显示更复杂的视图。在这种情况下,我们可以创建一个新的类,继承自`ActionProvider`,并重写必要的方法来实现我们的需求。 我们要使用的是`android.support.v4.view.ActionProvider`,因为它兼容Toolbar和ActionBar。创建一个名为`BadgeActionProvider`的类,如下所示: ```java public class BadgeActionProvider extends ActionProvider { public BadgeActionProvider(Context context) { super(context); } @Override public View onCreateActionView() { // 这里返回我们的自定义布局 return view; } } ``` 接下来,我们需要创建一个自定义布局,用于显示小红点和图标。在res/layout目录下创建一个XML文件,例如`badge_view.xml`: ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="?actionBarItemBackground"> <ImageView android:id="@+id/iv_icon" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_centerInParent="true" android:scaleType="center" /> <TextView android:id="@+id/tv_badge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:background="@drawable/badge_circle" android:textColor="@android:color/white" android:padding="2dp" android:textSize="10sp" android:visibility="gone" /> <!-- 初始隐藏,根据逻辑决定是否显示 --> </RelativeLayout> ``` 在上面的布局中,我们创建了一个RelativeLayou
- 粉丝: 3
- 资源: 931
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助