Android 项目中自界说多个 RadioButton 并排一列选择效果实现 ...

打印 上一主题 下一主题

主题 523|帖子 523|积分 1569

1、静态版实现

1.1、实现要求

我们需要在Android中创建多个RadioButton并排成一行,且可以或许左右滑动。我们将使用HorizontalScrollView来实现左右滑动的功能,并在其内部放置一个RadioGroup来排列RadioButton。
1.2、实现步骤

1、创建结构文件:在res/layout文件夹下创建一个XML结构文件。
2、在结构文件中使用HorizontalScrollView和RadioGroup:在HorizontalScrollView中包罗一个RadioGroup,并在此中添加多个RadioButton。
3、在Activity中加载结构:设置Activity的结构文件,并在代码中处理RadioButton的逻辑(如果需要)。
4、运行效果:展示代码的运行结果。
1.3、代码实现

1、 结构文件(XML)
在res/layout文件夹中创建一个名为activity_main.xml的结构文件,内容如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:orientation="vertical"
  6.     android:padding="16dp">
  7.     <HorizontalScrollView
  8.         android:layout_width="match_parent"
  9.         android:layout_height="wrap_content"
  10.         android:scrollbars="none">
  11.         <RadioGroup
  12.             android:layout_width="wrap_content"
  13.             android:layout_height="wrap_content"
  14.             android:orientation="horizontal">
  15.             <RadioButton
  16.                 android:id="@+id/radioButton1"
  17.                 android:layout_width="wrap_content"
  18.                 android:layout_height="wrap_content"
  19.                 android:text="Option 1" />
  20.             <RadioButton
  21.                 android:id="@+id/radioButton2"
  22.                 android:layout_width="wrap_content"
  23.                 android:layout_height="wrap_content"
  24.                 android:text="Option 2" />
  25.             <RadioButton
  26.                 android:id="@+id/radioButton3"
  27.                 android:layout_width="wrap_content"
  28.                 android:layout_height="wrap_content"
  29.                 android:text="Option 3" />
  30.             <RadioButton
  31.                 android:id="@+id/radioButton4"
  32.                 android:layout_width="wrap_content"
  33.                 android:layout_height="wrap_content"
  34.                 android:text="Option 4" />
  35.             <RadioButton
  36.                 android:id="@+id/radioButton5"
  37.                 android:layout_width="wrap_content"
  38.                 android:layout_height="wrap_content"
  39.                 android:text="Option 5" />
  40.             <!-- 可以继续添加更多的 RadioButton -->
  41.         </RadioGroup>
  42.     </HorizontalScrollView>
  43. </LinearLayout>
复制代码
2、Activity文件(Java)
在MainActivity中加载结构文件。
  1. package com.example.radiobuttonexample;
  2. import android.os.Bundle;
  3. import androidx.appcompat.app.AppCompatActivity;
  4. public class MainActivity extends AppCompatActivity {
  5.     @Override
  6.     protected void onCreate(Bundle savedInstanceState) {
  7.         super.onCreate(savedInstanceState);
  8.         setContentView(R.layout.activity_main);
  9.         // 在这里可以处理 RadioButton 的逻辑,例如设置监听器
  10.     }
  11. }
复制代码
3、 运行效果
当运行上述代码时,您将会看到多个RadioButton并排一行排列在屏幕上,并且可以左右滑动查看更多的选项。
1.4、代码实现分析

1、HorizontalScrollView:这是一个水平滚动的视图容器,允许其包罗的视图在水平方向上滑动。我们使用它来实现RadioButton的左右滑动功能。
2、RadioGroup:这是一个用于包罗RadioButton的容器,我们将其方向设置为水平(androidrientation=“horizontal”),使其内的RadioButton并排显示。
3、RadioButton:这些是单选按钮,每个按钮表现一个选项。
1.5、结论

通过使用HorizontalScrollView和RadioGroup,我们可以或许在Android中创建一个可以或许左右滑动的并排RadioButton组。这个实现方法适用于需要在一个屏幕上显示多个选项但空间有限的环境。这样不仅保持了结构的整洁,还提高了用户体验。
2、项目版实现(动态)

如果渴望RadioButton的数目和内容可以或许动态设置,可以通过网络哀求或当地数据库读取数据,并根据数据动态生成RadioButton。
1、先看效果图


可以左右滑动

2、main的结构文件


3、界说RadioButton的属性


3.1、结构文件引用了android:background=“@drawable/radiostyles”

3.2、结构文件引用了android:textColor=“@color/colorselector”

4、最后在代码中生成我想要的东东

根据项目实际环境,按钮的个数通过函数参数传递进来,

代码动态生成按钮个数


5、分析

5.1、结构中通常会用到@null。如RadioButton常用的本领通过RadioGroup实现Tab,需要设置android:button=“@null”。如果要在代码中动态创建控件,android中并不能找到干系的属性或方法。搜索均无解决办法,最后想到一个变通的方法:通过透明色获取drawable。
//java代码
setButtonDrawable(getResources().getDrawable(android.R.color.transparent));
5.2、实际照旧可以通过结构的方法来动态创建控件。先创建一个RadioButton的radiobutton.xml,再用代码生成RadioButton,本示例就是用的这种方法:
//java代码
RadioButton radioButton = (RadioButton) LayoutInflater.from( getBaseContext( ) ).inflate(R.layout.radiobutton, null );
这种方式的好处是样式等属性可以在结构中统一指定省的查sdk探求干系属性的设置方法,要否则在结构中有些属性是没有对应的设置函数,或许是很难找到对应的函数。
在以后还可以把这个例子的功能上完善,比如说实现反弹的效果,这样就更完美了,值得等待。
3、后续优化方向

3.1、使用 RecyclerView
如果我们的选项数目非常大,或者需要支持动态加载和回收复用视图的环境,建议使用 RecyclerView 来替代 RadioGroup。这样可以提高性能并支持大量选项的展示。
3.2、使用 RecyclerView 的示例:
*创建一个 RecyclerView 的结构文件,比方 item_radio_button.xml,用于界说单个 RadioButton 的结构。
*创建一个 RecyclerView 的适配器,在适配器中设置 RadioButton 的数据和点击变乱。
*在 MainActivity 中使用 RecyclerView,并设置其结构管理器和适配器。
欢迎点赞|关注|收藏|评论,您的肯定是我创作的动力


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表