原文地址: Android MaterialButtonToggleGroup使用 - Stars-One的杂货小窝

觉得单选框不好看,发现了一个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使用的更多相关文章

  1. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  2. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  3. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  4. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  5. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  8. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  9. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

  10. Android UI体验之全屏沉浸式透明状态栏效果

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...

随机推荐

  1. 教你用JavaScript实现调皮的字母

    案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,制作提高打字速度的小游戏-调皮的字母.点击与屏幕上字母相对应的按键,若按键与出现的字母一致 ...

  2. Windows更换笔记本电脑需要迁移和删除的内容清单

    一.需要迁移的内容清单 1.桌面和磁盘中重要的文件或者文件夹 2.chrome.Edge等浏览器的书签,可以导出 3.常用的软件安装包 (1).输入法(百度.或者搜狗) (2).浏览器(Chrome浏 ...

  3. Argocd学习

    argocd官网文档链接 ArgoCD官网文档 在K8S集群使用argocd命令将集群添加到argcd的cluster列表中 argocd cluster add kubernetes-admin@i ...

  4. JS Leetcode 530. 二叉搜索树的最小绝对差 题解分析,再次了解中序遍历

    壹 ❀ 引 本题来自LeetCode 783. 二叉搜索树节点最小距离,题目描述如下: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 示例 1: 输入:root ...

  5. NC24370 [USACO 2012 Dec S]Milk Routing

    题目链接 题目 题目描述 Farmer John's farm has an outdated network of M pipes (1 <= M <= 500) for pumping ...

  6. NC16758 [NOIP2000]单词接龙

    题目链接 题目 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在&quo ...

  7. RESTful架构与RPC架构

    RESTful架构与RPC架构 在RESTful架构中,关注点在于资源,操作资源时使用标准方法检索并操作信息片段,在RPC架构中,关注点在于方法,调用方法时将像调用本地方法一样调用服务器的方法. RE ...

  8. CompletableFuture使用自定义线程池实现多任务结果聚合返回

    为什么要使用自定义线程池? 默认线程池缺点 1.CompletableFuture默认使用的线程池是 ForkJoinPool.commonPool(),commonPool是当前 JVM(进程) 上 ...

  9. 超简单JSP人员信息管理系统(适合新手练手用)

    自己以前闲着没事写的JSP小项目,适合刚学完JSP拿来练手的朋友. 源码地址: https://github.com/mudfish/userManager 项目说明: 软件需求: 开发工具:ecli ...

  10. pycharm—flask创建简单web项目

    1.系统 系统 版本 OS win 10 pycharm 专业版2022.3.1 2.引入flask包 pip install flask 3.项目目录展示.代码.浏览器访问 from flask i ...