Android 动态生成 radiobutton 解决 radiogroup 多行显示的问题 单选
2017-04-09 01:57
681 查看
项目有需求,然后看了下网上的方法,好多都太麻烦了,而且也不怎么靠谱。。
先上效果图
先上布局的代码
<RadioGroup
android:id="@+id/radio_group_directory_filter_game"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="3"
android:layout_below="@id/text_title_game"/>
然后是java代码
先上效果图
先上布局的代码
<RadioGroup
android:id="@+id/radio_group_directory_filter_game"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="3"
android:layout_below="@id/text_title_game"/>
然后是java代码
public void setGameRadioButton(RadioGroup gameRadioGroup){ Gson gson = new Gson(); List<Group> allGroups = new ArrayList<>(); allGroups.add(new Group("Dota2","Dota2")); allGroups.add(new Group("LOL","LOL")); allGroups.add(new Group("守望先锋","守望先锋")); allGroups.add(new Group("王者荣耀","王者荣耀")); float density = getResources().getDisplayMetrics().density; RadioGroup.LayoutParams radioParams = new RadioGroup.LayoutParams(0, ViewGroup.LayoutParams.WRAP_CONTENT, 1.0f); int radioMargin = (int) (4 * density); radioParams.setMargins(0, radioMargin, 16, radioMargin); int i = 0; while (i < allGroups.size()) { int j = 0; LinearLayout ll = new LinearLayout(getActivity()); ll.setOrientation(LinearLayout.HORIZONTAL); ll.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); ll.setWeightSum(3.0f); while (j < 3 && i < allGroups.size()) { ll.addView(getGameGroupRadio(allGroups.get(i),i), radioParams); i++; j++; } gameRadioGroup.addView(ll); } }
private RadioButton getGameGroupRadio(Group group,int position) { RadioButton btn = (RadioButton) getActivity().getLayoutInflater().inflate(R.layout.radio_directory_sidebar, null); btn.setText(group.getName()); switch (position){ case 0: DOTA2_ID = btn; break; case 1: LOL_ID = btn; break; case 2: OVERWATCH_ID = btn; break; case 3: KINGGLORY_ID = btn; break; } btn.setOnClickListener(new View.OnClickListener() {//单独给每个生成的radiobutton生成点击事件,我是通过position来分辨不同radiobutto的,原因是,我通过对radiogroup再来监听radiobutton失败了,反正监听没反应,所以只能这么干了 @Override public void onClick(View view) { for (int i = 0; i < mRadioGame.getChildCount(); i++) { LinearLayout row = (LinearLayout) mRadioGame.getChildAt(i); for (int j = 0; j < row.getChildCount(); j++) { RadioButton radio = (RadioButton) row.getChildAt(j); radio.setChecked(false); } } switch (position){ case 0: DOTA2_ID.setChecked(true); mDirectoryOption.setGameId(Game.DOTA2_ID); break; case 1: LOL_ID.setChecked(true); mDirectoryOption.setGameId(Game.LOL_ID); break; case 2: OVERWATCH_ID.setChecked(true); mDirectoryOption.setGameId(Game.OVERWATCH_ID); break; case 3: KINGGLORY_ID.setChecked(true); mDirectoryOption.setGameId(Game.KING_GLORY_ID); break; } updateBar(); } }); return btn; }
相关文章推荐
- Android RadioGroup多行显示,解决单选问题
- Android RadioGroup中设置默认选中RadioButton 后,选中两个的问题 解决方法
- Android RadioGroup中设置默认选中RadioButton 后,选中两个的问题 解决方法
- Android RadioGroup中设置默认选中RadioButton 后,选中两个的问题 解决方法
- android 动态添加组件(RadioGroup 添加RadioButton和其他组件的一些问题)
- android RadioGroup中的RadioButton手动设置相关问题
- android RadioGroup中设置selector后出现多个别选中的RadioButton的解决办法
- 【Android基础学习】动态设置 listView的高度,解决scrollView中嵌套listview时显示不全的问题
- Android RadioGroup中横向、竖向布局RadioButton的问题
- RadioGroup里设置RadioButton为初始的都不选中状态及设置默认选中出现的问题及解决方法
- ExtJS 单选按钮组RadioGroup在IE浏览器中显示不出来的问题
- 解决某些手机RadioGroup中的RadioButton不居中(右移)问题
- Android ListView中的项中包含RadioGroup时,RadioButton混乱选中的问题的解决方法
- Android 使用RadioGroup和RadioButton实现单选效果
- 解决Android开发中ViewPager动态设置PagerAdapter时第二次进入Fragment内容不显示的问题
- Android:解决RadioGroup中RadioButton的图片自定义及每项间隔距离一样
- 解决某些手机RadioGroup中的RadioButton不居中问题
- Android之ListView包含RadioButton的单选问题解决办法
- RadioGroup 多行多列单选问题
- android单选按钮选择,RadioGroup,radioButton