RadioGroup的多行布局

Android 项目中自定义多个 RadioButton 并排一列选择效果实现 虽然RadioGroup通常用于垂直排列,但你可以通过自定义RadioGroup或其内部的来实现水平排列。这通常涉及到重写RadioGroup的onMeasure和onLayout方法,或者在布局文件中使用嵌套的布局来控制的排列。 阅读详情

RadioGroup默认的横向android:orientation="horizontal"、竖向布局android:orientation="vertical",无法设置每行显示的个数,只能全部横向显示或者竖向显示。

而通过线性布局模版后,RadioButton却变成不是同一个组的,变成不是单选的,达不到原先想要的效果。

在RadioGroup中一行显示2个RadioButton,上面的方法行不通,后来发现在RadioButton用android:layout_marginLeft和android:layout_marginTop可能设置RadioButton的相对位置,于是,通过下面代码,实现了一行显示2列RadioButton,目前还未测试在不同分辨率下是否会出现误差。效果图如下:

布局代码如下:

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="
http://schemas.android.com/apk/res/android"
  android:id="@+id/layout_sort"
  android:layout_width="fill_parent"
  android:layout_height="120px"
  android:layout_weight="1"
  android:orientation="vertical"
  android:layout_gravity="center"
  android:gravity="center"
  android:layout_margin="5px"
  android:paddingLeft="10px"
  android:paddingRight="10px"
  android:paddingTop="5px"
  android:paddingBottom="5px">
  
  <ScrollView
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:scrollbars="vertical"
   android:fadingEdge="vertical">
   
   <LinearLayout android:id="@+id/layout_sort0"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
  
    <LinearLayout android:id="@+id/layout_sort1"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical"
     android:layout_gravity="left"
     android:gravity="left">
   
     <TextView android:id="@+id/rename_sortTitle"
      android:layout_width="fill_parent"
      android:layout_height="32px"
      android:singleLine="true"
      android:textSize="20sp"
      android:textStyle="bold"
      android:gravity="center_vertical|left"
      android:layout_gravity="center_vertical|left"
      android:text="请选择排序方式:" />
    
     <RadioGroup android:id="@+id/orderBy"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical">

      <RadioButton android:id="@+id/orderBy1"
       android:text="名称"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" />
     
      <RadioButton android:id="@+id/orderBy2"
       android:text="日期"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="120px"
       android:layout_marginTop="-48px"/>
     
      <RadioButton android:id="@+id/orderBy3"
       android:text="类型"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" />
    
      <RadioButton android:id="@+id/orderBy4"
       android:text="大小"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="120px"
       android:layout_marginTop="-48px" />
      
      <RadioButton android:id="@+id/orderBy5"
       android:text="系统默认"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" />    
    
     </RadioGroup>
   
     <View android:layout_width="fill_parent"
      android:layout_height="1dip"
      android:background="#ff666666" />
   
     <RadioGroup android:id="@+id/orderLx"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content">
    
      <RadioButton android:id="@+id/orderLx1"
       android:text="升序"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>
     
      <RadioButton android:id="@+id/orderLx2"
       android:text="降序"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="120px"
       android:layout_marginTop="-48px" />
         
     </RadioGroup>
    
    </LinearLayout>

    <LinearLayout android:id="@+id/layout_sort2"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal"
     android:layout_gravity="center"
     android:gravity="center">
 
     <Button android:id="@+id/sortOk"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="确定"
      android:layout_margin="5px"/>
  
     <Button android:id="@+id/sortCancel"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="取消"
      android:layout_margin="5px"/>
 
    </LinearLayout>
    
   </LinearLayout>
   
  </ScrollView> 
  
 </LinearLayout>

以上是我转载的一篇通过xml文件中的属性设置来达到多行布局radiobutton的文章,下面是我自己实现的笨方法:

具体步骤就是先布局多个radiogroup,然后在java程序中选中一个的同时调用其他组的radiogroup.clearCheck();

Android RadioGroup实现多行显示,并保持单选 RadioGroup在添加子view时,仅判断了其是否是RadioButton,故LinearLayout并不符合这一条件,要想实现内嵌LinearLayout+RadioButton,只能自定义RadioGroup,并重写addView方法。公司项目最近有个这样的需求,要求实现【多个文本,多行显示,且同时只能选中一个】。至此实现【多个文本,多行显示,且同时只能选中一个】效果。 阅读详情

相关推荐

RadioGroup 多行多列单选问题

xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="m

JayChou2016 3789

Android RadioGroup 横向显示(两行两列)

做的android平板项目中,需要做一个调查问卷的界面,所以需要使用radiogroup的单选按钮,在listview的一个item上添加四个radiobutton,具体的demo是参考这位博主的,链接如下:http://blog.youkuaiyun.com/who0am0i/article/details/45200709,里面解决了我最大的难题就是如何在一个item中,识别用户点击的是哪一个radio,

你好邱林和的专栏 3万+

Android实现多行多列复杂布局的RadioGroup组件开发

要实现多行多列的RadioGroup,首先需要了解 Android 中ViewGroup的布局机制。自定义ViewGroup是实现复杂布局结构的基础,其核心在于正确实现和onLayout()方法。在多行多列布局中,我们无法直接继承 RadioGroup,必须手动实现单选逻辑。我们可以通过继承ViewGroup或使用FlowLayout作为基础容器,结合自定义的单选管理类来实现。定义接口:使用方式:= null) {});功能说明:接口设计与原生。

weixin_28809949的博客 902

自定义RadioGroupX实现多行多列布局

前言 今天在做新需求的时候,活动有多个类型可以选择,UI给的设计图为多行多列排版,且单项选择,细细想来,谷歌并没有为我们提供类似的控件,初步设想使用RecyclerView实现多行多列布局,然后再用代码控制逻辑部分,总感觉不太稳妥,又想到让UI小姐姐重新设计一番?感觉也不太稳妥,这样UI小姐姐就会认为我菜,为了不让別人觉得我菜,干脆自定义RadioGroupX实现多行多列布局。 思考 在工作中,面对一个功能,首先想到的是应该怎样实现完成它,然后再考虑究竟怎样实现才更优雅。正如前面提到,实现这种需求是可以用多

zhuhuitao 685

RadioGroup支持RadioButton多行多列

RadioGroup支持RadioButton多行多列,并获取到点击的radiobutton的值

BERTopic安装指南:hdbscan依赖问题全解析(附解决方案)

本文详细解析了安装BERTopic时常见的hdbscan依赖报错问题,深入剖析了C++编译环境缺失、Python版本兼容性以及包管理渠道混用三大核心原因。针对Windows、macOS和Linux不同系统,提供了创建虚拟环境、使用conda安装预编译包、安装C++编译工具等具体解决方案,帮助用户顺利安装BERTopic并开始文本主题建模实践。

weixin_29061041的博客 212

在RadioGroup中实现RadioButton的多行多列线性布局

需要实现一个三行两列的RadioGroup,首先设想的是在RadioGroup里面设置三个横向的LinearLayout,然后在每个LinearLayout里面实现两个RadioButton,但这样会导致无法实现单选功能,可以同时选中多个按钮,且无法取消选择,故放弃此想法。 后来找了这篇文章。原文使用了三个RadioGroup,但完全可以用两个垂直的RadioGroup来实现。 简单说来就

Tournesolmcm的专栏 1858

Dell R730安装Windows Server 2008 R2

一、RAID驱动准备  在安装Windows server2008 R2操作系统时,如果没有发现硬盘,请将下面的阵列卡驱动先解压(在下载的.exe文件,双击点下一步会自动解压),解压后把那文件夹复制到U盘中。阵列卡 PERC9 H330 - H730 - H730P - H830 Controllers for Windows Server 2008 R2二、系统安装方法方法一:光盘安装  ①请您...

MarshLin 2万+

android 多行布局,Android实现RadioGroup的多行多列布局且互斥

1.自定义viewpublic class MyRadioGroupContainer extends LinearLayout {private RadioGroup.OnCheckedChangeListener mCheckChangeListener;private RadioGroup lastRadioGroup;private RadioGroup.OnCheckedChangeLi...

weixin_28761455的博客 629

LEF 5.8 Language Reference学习笔记

您可以在一个 LEF 文件中定义所有元件库信息,但这样会产生一个复杂且难以管理的大文件。相反,您可以将信息分为两个文件,一个是 "technology "LEF 文件,另一个是 "cell library "LEF 文件。

yajuan的专栏 4098

视觉SLAM十四讲--第13讲 实践:设计SLAM系统(最详细的代码调试运行步骤)

最详细的代码调试运行避坑说明,也包含了我自己对代码的理解,如有理解错误的地方,欢迎指正交流。

记录和分享 1万+

Android RadioGroup 自定义布局, 支持多行多列

经过反复试验,发现无论你怎么摆弄RadioGroup, 都无法实现多行多列的单选按钮组。  1. 如果不结合其他布局,例如LinearLayout, 则只能实现单行多个按钮组,或者单列多个按钮组。  2. 如果结合其他布局, 虽然可以实现多行多列的RadioButton布局,但是,如果不通过一些互斥算法,也无法实现按钮组的单选操作。      所以,我对RadioGroup进行了改写

2989

云服务器安装ros教程

要在 CentOS 7 系统上安装 RouterOS,您需要将 RouterOS 安装为虚拟机或直接安装到物理硬盘上。这里提供的是将 RouterOS 安装到物理硬盘上的步骤,这将完全替换现有的 CentOS 7 系统。请确保您已经备份了所有重要数据。

qq_37662563的博客 2145

RadioGroup+RadioButton嵌套其他布局实现多行单选布局、自定义RadioButton选中和非选中样式、文字颜色

教你实现RadioButton多行单选、随意布局;RadioButton自定义样式,文字根据选中状态切换颜色

Hansion的博客 4674

YOLO11涨点优化:损失函数优化 | 引入MPDIoU,利用边界框左上角和右下角距离,彻底解决重叠框匹配失效问题

【摘要】针对目标检测中重叠框匹配失效问题,本文提出基于MPDIoU损失函数的解决方案。MPDIoU通过同时约束边界框的左上角和右下角两点距离,有效解决了传统IoU损失在重叠场景下的优化歧义问题。文章首先分析YOLO系列在密集目标检测中的性能瓶颈,指出GIoU/CIoU等现有方法无法区分相同IoU值但偏移方向不同的预测框。随后详细解析MPDIoU的数学原理及其相对于主流损失函数的优势,证明两点距离约束能提供唯一优化方向。最后给出在YOLO11中实现MPDIoU的具体方案,包括核心代码修改点和架构适配建议。实验

2601_95807009的博客 171

YOLOv8改进-利用图像去雾网络UnfogNet提升检测精度的探索【附核心模块代码】

YOLOv8-UnfogNet联合模型的提出为目标检测和图像去雾领域提供了一个新的思路。通过将图像去雾网络和目标检测网络结合,不仅可以提升在恶劣天气下的目标检测精度,还能够为实际应用中的自动驾驶、监控安防等领域带来更强的鲁棒性和适应性。随着去雾技术和目标检测算法的不断发展,我们相信,这种联合方法将在多个领域中获得更加广泛的应用,并为进一步提升图像质量和检测精度做出重要贡献。

一键难忘的博客 3202

简单解决Android RadioButton布局问题(多个RadioGroup之间的互斥)

在Android开发中,需要实现多行多列的RadioButton布局,网上看了一些其他方法,感觉都有点麻烦。这里总结一种简单的实现方式。 首先,

ArcheriesYe的博客 4695

【AI大模型】角色设定:给模型定身份的高效使用方法

摘要: AI大模型角色设定(RolePrompting)是提示词工程的核心优化技巧,通过赋予模型特定职业、领域和风格约束,显著提升输出专业度与适配性。文章系统拆解了角色设定的原理、万能公式(领域+身份+技能+风格+场景)、三级分层写法(基础/进阶/专家),并提供10类高频场景的模板。通过无角色与有角色输出的对比实验(Python代码量化验证),证明角色设定可使模型综合得分提升35%以上,尤其优化场景适配度与风格统一性。该技巧作为高阶提示词(如CoT、Few-Shot)的前置模块,能以零成本实现AI输出的专业

unber的博客 40

实现多行RadioGroup

Android中的RadioGroup只能横向或者纵向单行

云上de日子的专栏 716

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

自定义RadioGroup和RadioButton,让布局有更多选择

android的系统控件RadioGroup布局继承的是LinearLayout,所以只能实现这样单行或者单列的 也很容易实现 但是有时候会是这种多行多列布局 遇到这种情况RadioGroup就没用了。 况且单个选项的布局有可能会很复杂,RadioButton内又不能设置复杂布局 为了解决这个问题我写了一套自定义的RadioGroup和RadioButton,RadioGroup继承了G...

疾风剑豪 865

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

自定义添加多列多行radioGroup

通过源码发下RadioGroup继承自LinearLayout,所以他默认只能实现单行或者单列的,要想进行多行多列,只能对其进行改写。 1. 如果不结合其他布局,例如LinearLayout,RelativeLayout。 则只能实现单行多个按钮组,或者单列多个按钮组。  2. 如果结合其他布局, 虽然可以实现多行多列的RadioButton布局,但是,如果不通过一些互斥算法,也无法实现按钮组

Vegetable的博客 1049

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android 单选 多行,Android RadioGroup多行显示效果 解决单选问题

导语如下图所示,这是一个导航选择弹框。进行单项选择,然后会监听回调选择的事件。问题是Android的RadioButton是一般是放在RadioGroup中进行管理的,而RadioGroup又是线性布局,即单行有效,多行无效。如图那种就需要两个RadioGroup来进行合作。那么如果进行合作呢?分析:RadioGroup多行显示其实就是两个RadioGroup进行切换,使用RadioGroup的c...

weixin_42255222的博客 430

Android 自定义View之RadioGroup实现跨多行显示

此自定义View源于网络,具体出处不详。import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.v...

青芸的博客 404

自定义控件:自定义RadioGroup和RadioButton,让布局有更多选择

转载请注明出处:http://blog.youkuaiyun.com/wriar/article/details/79004334 android的系统控件RadioGroup布局继承的是LinearLayout,所以只能实现这样单行或者单列的 也很容易实现 但是有时候会是这种多行多列布局 遇到这种情况RadioGroup就没用了。 况且单个选项的布局有可能会很复杂,Radi

wriar的专栏 1万+

Android 自定义View实现任意布局的RadioGroup

转载请注明出处:https://blog.youkuaiyun.com/a512337862/article/details/82498400

Black_Hao的博客 2336
上一篇: activity的声明机制及返回保存信息
下一篇: android移植
快乐的小鸟
博客等级 码龄14年 25粉丝 40原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值