小案例:ToolBar+选项菜单

2024-04-24 02:12
文章标签 案例 选项 菜单 toolbar

本文主要是介绍小案例:ToolBar+选项菜单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用选项菜单,一般是用于做单选,需要重写方法:

public boolean onCreateOptionsMenu(Menu menu)

如果想要实现事件监听,则采用基于回调的事件监听机制,可以监听到具体是哪一项被选中。即重写方法:

public boolean onOptionsItemSelected(@NonNull MenuItem item)

以前的版本使用的是ActionBar,现在新的版本更推荐使用ToolBar。所以,以前的方法getActionBar或者getSupportActionBar获取出来的结果为Null的可能性巨大,建议不要再使用(避坑)。

案例:ToolBar+选项菜单

布局中使用ToolBar

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="wrap_content"><ImageViewandroid:layout_width="32dp"android:layout_height="32dp"android:src="@drawable/a"/><TextViewandroid:id="@+id/textView"android:layout_width="match_parent"android:layout_height="32dp"android:gravity="center"android:text="标题文字"/></androidx.appcompat.widget.Toolbar>
</LinearLayout>

设计图效果

逻辑文件中,首先声明属性,再绑定组件,接下来将ToolBar设置为ActionBar

即可看到和效果图一样的效果

接下来,想要显示选项菜单,也就是【标题文字】的右侧还要显示【...】,并且点击后,能显示菜单,实现选择不同颜色,就可以改变【标题文字】的颜色

逻辑文件中重写方法onCreateOptionsMenu

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {SubMenu subMenu = menu.addSubMenu("字体颜色");subMenu.add(0,1,0,"红色");subMenu.add(0,2,0,"绿色");subMenu.add(0,3,0,"蓝色");subMenu.add(0,4,0,"粉色");subMenu.setGroupCheckable(0,true,true);return super.onCreateOptionsMenu(menu);}

该方法的目的是点击三个点的时候,能弹出选择项,并设置为单选

接下来,还需要做基于回调的事件监听

重写监听方法

public boolean onOptionsItemSelected(@NonNull MenuItem item) {int itemId = item.getItemId();if (itemId==1){Toast.makeText(this, "红色", Toast.LENGTH_SHORT).show();TextView textView = toolbar.findViewById(R.id.textView);textView.setTextColor(Color.RED);} else if (itemId==2) {Toast.makeText(this, "绿色", Toast.LENGTH_SHORT).show();TextView textView = toolbar.findViewById(R.id.textView);textView.setTextColor(Color.GREEN);} else if (itemId==3) {Toast.makeText(this, "蓝色", Toast.LENGTH_SHORT).show();TextView textView = toolbar.findViewById(R.id.textView);textView.setTextColor(Color.BLUE);} else if (itemId==4) {Toast.makeText(this, "粉色", Toast.LENGTH_SHORT).show();TextView textView = toolbar.findViewById(R.id.textView);textView.setTextColor(Color.rgb(30,15,200));}return super.onOptionsItemSelected(item);}

逻辑是:选择选项1,就把【标题文字】的颜色改为红色;其余的如法炮制

整体逻辑文件:

package com.yibinu.actionbardemo;import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {Toolbar toolbar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);toolbar = findViewById(R.id.toolbar);setSupportActionBar(toolbar);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {SubMenu subMenu = menu.addSubMenu("字体颜色");subMenu.add(0,1,0,"红色");subMenu.add(0,2,0,"绿色");subMenu.add(0,3,0,"蓝色");subMenu.add(0,4,0,"粉色");subMenu.setGroupCheckable(0,true,true);return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(@NonNull MenuItem item) {int itemId = item.getItemId();if (itemId==1){Toast.makeText(this, "红色", Toast.LENGTH_SHORT).show();TextView textView = toolbar.findViewById(R.id.textView);textView.setTextColor(Color.RED);} else if (itemId==2) {Toast.makeText(this, "绿色", Toast.LENGTH_SHORT).show();TextView textView = toolbar.findViewById(R.id.textView);textView.setTextColor(Color.GREEN);} else if (itemId==3) {Toast.makeText(this, "蓝色", Toast.LENGTH_SHORT).show();TextView textView = toolbar.findViewById(R.id.textView);textView.setTextColor(Color.BLUE);} else if (itemId==4) {Toast.makeText(this, "粉色", Toast.LENGTH_SHORT).show();TextView textView = toolbar.findViewById(R.id.textView);textView.setTextColor(Color.rgb(30,15,200));}return super.onOptionsItemSelected(item);}
}

效果:

Toolbar+选项菜单

这篇关于小案例:ToolBar+选项菜单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/930503

相关文章

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers

ROS2从入门到精通4-4:局部控制插件开发案例(以PID算法为例)

目录 0 专栏介绍1 控制插件编写模板1.1 构造控制插件类1.2 注册并导出插件1.3 编译与使用插件 2 基于PID的路径跟踪原理3 控制插件开发案例(PID算法)常见问题 0 专栏介绍 本专栏旨在通过对ROS2的系统学习,掌握ROS2底层基本分布式原理,并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。 🚀详情:《ROS2从入门到精通》 1 控制插

iOS 到处 ipa包的时候 会有四个选项分别代表什么

如图 在 iOS 到处 ipa包的时候 会有四个选项  1.Save for iOS App Store Deployment 保存到本地 准备上传App Store 或者在越狱的iOS设备上使用 2.Save for Ad Hoc Deployment 保存到本地 准备在账号添加的可使用设备上使用(具体为在开发者账户下添加可用设备的udid),该app包是发布证书编

2_为MFC程序添加菜单

在MFC中添加菜单栏 1,双击资源文件,显示资源视图,点击Menu插入Menu菜单,编辑菜单的ID,自己取名字。 2,点击“请在此处键入”添加菜单选项,输入&E,E的下面就会产生下划线;在产生的弹出菜单中继续编辑,并且可以添加事件处理函数; 在弹出菜单的任意位置,鼠标右键,弹出的菜单中选择“插入分隔符”,即可产生分隔符 3,在你设计的Dialog窗口的属性栏,选择Menu后面的

django学习入门系列之第三点《案例 小米商城头标》

文章目录 阴影案例 小米商城头标往期回顾 阴影 设置阴影 box-shadow:水平方向 垂直方向 模糊距离 颜色 box-shadow: 5px 5px 5px #aaa; 案例 小米商城头标 目标样式: CSS中的代码 /*使外边距等于0,即让边框与界面贴合*/body{margin: 0;}/*控制父级边框*/.header{backgroun

MATLAB算法实战应用案例精讲-【数模应用】三因素方差

目录 算法原理 SPSSAU 三因素方差案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果 5、文字分析 6、剖析 疑难解惑 均方平方和类型? 事后多重比较的类型选择说明? 事后多重比较与‘单独进行事后多重比较’结果不一致? 简单效应是指什么? 边际估计均值EMMEANS是什么? 简单简单效应? 关于方差分析时的效应量? SPSSAU-案例 一、案例

Retrofit介绍案例

Retrofit这东西我就不多做解释了,反正最近应用很广,基本都快和OkHttp一起成为安卓的事实网络访问标准框架了。   这么好的一个东西,官网文档实在是不算太好,说的不太清晰。按官网的经常会有“Could not locate ResponseBody converter for”问题。 反正折腾了一番,终于跑出来了一个例子。这里把正确的例子写出来,方便大家参考。 首先要注意

Kimichat使用案例026:AI翻译英语PDF文档的3种方法

文章目录 一、介绍二、腾讯交互翻译TranSmart https://transmart.qq.com/三、沉浸式翻译三、谷歌网页翻译 一、介绍 短的文章,直接丢进kimichat、ChatGPT里面很快就可以翻译完成,而且效果很佳。但是,很长的PDF文档整篇需要翻译,怎么办呢? 二、腾讯交互翻译TranSmart https://transmart.qq.com/ 软件

用python写一个AI Agent对接企业微信上下游协同的案例

要实现一个AI Agent对接企业微信上下游协同,我们可以使用Python编写一个企业微信机器人,用于接收和处理来自企业微信的消息。在此示例中,我们将使用`wechatpy`库来实现企业微信机器人,并使用`requests`库实现与上下游系统的通信。 首先,确保安装了`wechatpy`和`requests`库: ```bash pip install wechatpy requests ``

把Sublime Text 2 加入右键菜单(带图标), Edit with Sublime Text

Sublime Text 2 是现在很受大家欢迎的编辑器了,不仅是在web前端,在书定简单的php、Js等代码时,也是相当的好用,再配合多种的插件和新颖的界面,更是让人欲罢不能。 在使用时,我们通过喜欢打开一个文件的时候,右击再选择打开程序,比如会用记事本、Notedpad++之类的,这时如果把Sublime Text也加入到其中毕竟会方便不少,在找了一番后,实验成功,效果如下: 实现