Android MaterialButtonToggleGroup使用
觉得单选框不好看,发现了一个Material里的单选按钮组,感觉UI还不错,记下使用
使用
效果:

使用前,得看看是否有material的依赖,如
implementation 'com.google.android.material:material:1.4.0'
PS: 一般新的Android项目创建都是默认带上material组件依赖的
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/toggleGroup"
app:singleSelection="true"
app:checkedButton="@id/mbLanzou"
android:orientation="horizontal"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="wrap_content">
<com.google.android.material.button.MaterialButton
android:id="@+id/mbLanzou"
android:layout_weight="1"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="蓝奏云解析"/>
<com.google.android.material.button.MaterialButton
android:id="@+id/mbLanzouYx"
android:layout_weight="1"
android:layout_width="0dp"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_height="wrap_content"
android:text="蓝奏云优享版解析"/>
</com.google.android.material.button.MaterialButtonToggleGroup>
- checkedButton 默认选中按钮id
- singleSelection 是否单选
- orientation 元素排列方向
- selectionRequired 是否必须要选中
当 selectionRequired 属性设置为 true 时,用户必须选择组中的至少一个按钮。如果用户尝试取消选择所有按钮,MaterialButtonToggleGroup 将自动选择第一个按钮。
当 selectionRequired 属性设置为 false 时,用户可以不选择任何按钮,也可以选择其中的一个按钮。
感觉selectionRequired 是应该是结合多选来使用
MaterialButtonToggleGroup本质上和线性布局LinearLayout差不多,里面的元素也可以使layout_weight权重
关于代码示例:
//获取当前选中的按钮id
toggleGroup.checkedButtonId
//获取按钮id列表
toggleGroup.checkedButtonIds
//监听按钮选中
toggleGroup.addOnButtonCheckedListener { group, checkedId, isChecked ->
//checkedId为选中按钮id
if (checkedId == R.id.mbLanzou) {
//判断选中按钮之后逻辑
} else {
}
}
//选中某个按钮
toggleGroup.check(R.id.mbLanzou)
参考
Android MaterialButtonToggleGroup使用的更多相关文章
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记
以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
- Android UI体验之全屏沉浸式透明状态栏效果
前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...
随机推荐
- Intel Arrow Lake处理器还是8+16 24核心:接口换LGA1851
Intel已经确认,将在今年内发布未来两代处理器Arrow Lake.Lunar Lake,其中前者将弥补Meteor Lake的不足,同时用于笔记本.桌面.服务器,现在它的核心规格流出了. 这份曝光 ...
- 基于IO端口检测虚拟机
通过执行特权指令探测 Vmware: 因为在虚拟机中指定功能号 0xa 则会从指定端口获取虚拟机版本信息到指定的目的操作数地址: 另外 0x14 则是获取虚拟机内存大小,当获取的值大于0说明在虚拟机中 ...
- Java 数字 默认是 Integer类型的问题,System.currentTimeMillis() + (180 * 24 * 60 * 60 * 1000)的问题,剖析、Long + Integer的问题
最终结论: (180 * 24 * 60 * 60) 这种计算表达式在 Java中是默认以 Integer类型来的,若不超过 Integer的最大值则没有问题,若超过则必须用 (180 * 24 * ...
- ASP.NET Core分布式项目实战(oauth2 + oidc 实现 client部分)--学习笔记
任务16:oauth2 + oidc 实现 client部分 实现 client 之前启动一下上一节的 server,启动之前需要清除一些代码 注释 Program 的 MigrateDbContex ...
- NC50439 tokitsukaze and Soldier
题目链接 题目 题目描述 在一个游戏中,tokitsukaze需要在n个士兵中选出一些士兵组成一个团去打副本. 第i个士兵的战力为v[i],团的战力是团内所有士兵的战力之和. 但是这些士兵有特殊的要求 ...
- NC51178 没有上司的舞会
题目链接 题目 题目描述 Ural大学有N名职员,编号为1~N. 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司. 每个职员有一个快乐指数,用整数 \(Hi\) 给出,其中 \(1\le ...
- Annotation-specified bean name conflicts with existing
问题说明 Annotation-specified bean name conflicts with existing,non-compatible bean definition of same n ...
- 项目打包setup.py(setuptools)
参考 https://www.cnblogs.com/dan-baishucaizi/p/13564333.html https://www.cnblogs.com/dan-baishucaizi/p ...
- 【LeetCode栈与队列#05】滑动窗口最大值
滑动窗口最大值 力扣题目链接(opens new window) 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口 ...
- jquery实现轮播图切换
这个是我模仿网易云的音乐界面写的轮播图,主要实现的功能有 1.每隔4秒图片和对应的背景颜色一起切换 2.点击翻页会跳转到相对应的图片以及背景上 3.点击左右翻页,实现顺序切换 <1>HTM ...