Android自定义控件实现底部菜单(下)

作者:landptf 时间:2023-03-28 15:35:38 

在app中经常会用到底部菜单的控件,每次都需要写好多代码,今天我们用到了前几篇博客里的控件来进一步封装底部菜单。先看效果图:

Android自定义控件实现底部菜单(下)

主要包括以下功能:
1 设置icon以及点击之后的icon
2 设置文字
3 设置文字颜色以及点击之后的文字颜色
4 设置未读数量、更多以及new

我们先看如何使用,然后再看如何实现的

1 在布局文件中引用MenuM


<com.landptf.view.MenuM
 android:id="@+id/mm_bottom"
 android:layout_width="match_parent"
 android:layout_height="56dp"
 android:layout_alignParentBottom="true"
 landptf:backColor="@color/content"
 landptf:textColor="@color/text"
 landptf:textColorPress="@color/colorPrimary"
 landptf:count="4"
 />

这里主要说一下count属性,表示菜单项的个数。

2 在Activity中初始化


final MenuM mmBottom = (MenuM) findViewById(R.id.mm_bottom);
mmBottom.setText(text);
mmBottom.setIconDrawable(iconDrawable);
mmBottom.setIconDrawablePress(iconDrawablePress);
//设置默认选中第一项
mmBottom.setPressState(0, MotionEvent.ACTION_DOWN);
mmBottom.setOnItemClickListener(new MenuM.OnItemClickListener() {
 @Override
 public void onItemClick(int position) {
   Toast.makeText(MenuMTestActivity.this, mmBottom.getText(position), Toast.LENGTH_SHORT).show();
 }
});

mmBottom.setUnReadCount(0, 100);
mmBottom.setUnReadCount(1, 15);
mmBottom.setVisibilityMore(2, View.VISIBLE);
mmBottom.setVisibilityNew(3, View.VISIBLE);

有以下几个全局变量


text = new String[]{"首页", "通讯录", "发现", "我"};
//为了演示方便我只找了两张icon,在实际开发中一般需要从网络上下载,然后在设置
Drawable drawable = getResources().getDrawable(R.drawable.icon_home_page);
Drawable drawablePress = getResources().getDrawable(R.drawable.icon_home_page_press);
iconDrawable = new Drawable[]{drawable, drawable, drawable, drawable};
iconDrawablePress = new Drawable[]{drawablePress, drawablePress, drawablePress, drawablePress};

来源:https://my.oschina.net/landptf/blog/825973

标签:Android,底部菜单
0
投稿

猜你喜欢

  • WinForm开发中屏蔽WebBrowser脚本错误提示的方法

    2021-06-23 08:49:40
  • Java日常练习题,每天进步一点点(52)

    2023-03-31 11:23:46
  • java基本教程之synchronized关键字 java多线程教程

    2023-02-20 04:11:17
  • java多线程读写文件示例

    2021-08-11 11:03:28
  • Java分布式服务框架Dubbo介绍

    2022-09-16 01:27:53
  • java日期工具类实例分享

    2023-05-17 17:50:40
  • RadioButton实现选择后可取消选择

    2023-10-15 23:50:39
  • Spring Boot Redis 集成配置详解

    2022-12-05 20:57:59
  • Java常用类String的面试题汇总(java面试题)

    2023-11-23 20:40:45
  • Java多线程 Callable、Future 和FutureTask

    2023-07-24 08:09:23
  • SpringCloud使用Feign实现服务调用

    2021-11-10 05:19:20
  • Mybatis MapperScannerConfigurer自动扫描Mapper接口生成代理注入到Spring的方法

    2023-04-17 11:57:25
  • 新手Hadoop安装 环境搭建

    2022-12-15 05:34:02
  • Unity 修改FBX模型动画的操作

    2023-03-17 17:59:39
  • Android TabLayout(选项卡布局)简单用法实例分析

    2023-12-17 09:52:28
  • Android编辑框EditText与焦点变更监视器及文本变化监视器实现流程详解

    2021-06-21 04:48:14
  • springBoot集成Elasticsearch 报错 Health check failed的解决

    2022-12-07 05:18:16
  • Java List转换成String数组几种实现方式详解

    2023-11-10 07:19:41
  • 读写Android中assets目录下的文件的方法详解

    2023-03-03 15:50:35
  • SpringBoot关于自定义注解实现接口幂等性方式

    2023-09-27 14:03:42
  • asp之家 软件编程 m.aspxhome.com