Android中RadioGroup在代码中动态添加子控件RadioButton
2016-10-26 16:24
337 查看
如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201610/9668a6cd7e00d817627c9ab3a6777634)
我用红线圈出的地方,这个地方想来还得在代码中动态生成,因为个数你不确定
下面看代码:
import java.util.ArrayList;
import java.util.List;
import com.ss.b.helps.DensityUtilHelps;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class WecomActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wecom);
initViewTwo();
}
public void initViewTwo(){
RadioGroup radiogroup=(RadioGroup) findViewById(R.id.gadiogroup);
addview(radiogroup);
}
public List<String> getListSize(){
List<String>list=new ArrayList<String>();
list.add("服装33333");
list.add("玩具44444");
list.add("饰品5555");
list.add("饰品6666");
list.add("文具7777");
list.add("文具8888");
list.add("文具9999");
return list;
}
//动态添加视图
public void addview(RadioGroup radiogroup){
int index=0;
for(String ss:getListSize()){
RadioButton button=new RadioButton(this);
setRaidBtnAttribute(button,ss,index);
radiogroup.addView(button);
LinearLayout.LayoutParams layoutParams= (LinearLayout.LayoutParams) button
.getLayoutParams();
layoutParams.setMargins(0, 0, DensityUtilHelps.Dp2Px(this,10), 0);//4个参数按顺序分别是左上右下
button.setLayoutParams(layoutParams);
index++;
}
}
private void setRaidBtnAttribute( final RadioButton codeBtn, String btnContent, int id ){
if( null == codeBtn ){
return;
}
codeBtn.setBackgroundResource(R.drawable.radio_group_selector);
codeBtn.setTextColor(this.getResources().getColorStateList(R.drawable.color_radiobutton));
codeBtn.setButtonDrawable(new ColorDrawable(Color.TRANSPARENT));
//codeBtn.setTextSize( ( textSize > 16 )?textSize:24 );
codeBtn.setId( id );
codeBtn.setText( btnContent );
//codeBtn.setPadding(2, 0, 2, 0);
codeBtn.setGravity( Gravity.CENTER );
codeBtn.setOnClickListener( new OnClickListener( ) {
@Override
public void onClick(View v) {
Toast.makeText(WecomActivity.this, codeBtn.getText().toString(), Toast.LENGTH_SHORT).show();
}
});
//DensityUtilHelps.Dp2Px(this,40)
LinearLayout.LayoutParams rlp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT , DensityUtilHelps.Dp2Px(this,25) );
codeBtn.setLayoutParams( rlp );
}
}
布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="40dp"
android:orientation="vertical"
>
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none"
android:background="@null"
>
<RadioGroup
android:id="@+id/gadiogroup"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="10dp" >
</RadioGroup>
</HorizontalScrollView>
</LinearLayout>
</LinearLayout>
color_radiobutton.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_checked="true" android:color="@color/whitecolor"/>
<!-- not selected -->
<item android:state_checked="false" android:color="@color/buttom_tv"/>
</selector>radio_group_selector.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_checked="true"><shape>
<!-- 这个是选中的 设为true -->
<solid android:color="@color/toubu" />
<!-- 这个是按压的颜色 -->
<stroke android:width="1dp" android:color="@color/toubu" />
<corners android:radius="10dp" />
<!-- 四角的弧度 -->
</shape></item>
<!-- 这个是未选中的状态 -->
<item android:state_checked="false"><shape>
<!-- 这个是按压状态的 设为true -->
<solid android:color="@color/gray" />
<!-- 这个是按压的颜色 -->
<stroke android:width="1dp" android:color="@color/gray" />
<corners android:radius="10dp" />
<!-- 四角的弧度 -->
</shape></item>
</selector>
用到的几个颜色如下:
<color name="whitecolor">#ffffff</color>
<color name="buttom_tv">#484747</color>
<color name="toubu">#f4692a</color>
<color name="gray">#d3d3d3</color>
效果图片如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201610/3509aa33970d43094697f9ba5f08d8cf)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201610/8d65ce75db7ae3f36d0f44993ccdd856)
有需要的可以看看
我用红线圈出的地方,这个地方想来还得在代码中动态生成,因为个数你不确定
下面看代码:
import java.util.ArrayList;
import java.util.List;
import com.ss.b.helps.DensityUtilHelps;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class WecomActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wecom);
initViewTwo();
}
public void initViewTwo(){
RadioGroup radiogroup=(RadioGroup) findViewById(R.id.gadiogroup);
addview(radiogroup);
}
public List<String> getListSize(){
List<String>list=new ArrayList<String>();
list.add("服装33333");
list.add("玩具44444");
list.add("饰品5555");
list.add("饰品6666");
list.add("文具7777");
list.add("文具8888");
list.add("文具9999");
return list;
}
//动态添加视图
public void addview(RadioGroup radiogroup){
int index=0;
for(String ss:getListSize()){
RadioButton button=new RadioButton(this);
setRaidBtnAttribute(button,ss,index);
radiogroup.addView(button);
LinearLayout.LayoutParams layoutParams= (LinearLayout.LayoutParams) button
.getLayoutParams();
layoutParams.setMargins(0, 0, DensityUtilHelps.Dp2Px(this,10), 0);//4个参数按顺序分别是左上右下
button.setLayoutParams(layoutParams);
index++;
}
}
private void setRaidBtnAttribute( final RadioButton codeBtn, String btnContent, int id ){
if( null == codeBtn ){
return;
}
codeBtn.setBackgroundResource(R.drawable.radio_group_selector);
codeBtn.setTextColor(this.getResources().getColorStateList(R.drawable.color_radiobutton));
codeBtn.setButtonDrawable(new ColorDrawable(Color.TRANSPARENT));
//codeBtn.setTextSize( ( textSize > 16 )?textSize:24 );
codeBtn.setId( id );
codeBtn.setText( btnContent );
//codeBtn.setPadding(2, 0, 2, 0);
codeBtn.setGravity( Gravity.CENTER );
codeBtn.setOnClickListener( new OnClickListener( ) {
@Override
public void onClick(View v) {
Toast.makeText(WecomActivity.this, codeBtn.getText().toString(), Toast.LENGTH_SHORT).show();
}
});
//DensityUtilHelps.Dp2Px(this,40)
LinearLayout.LayoutParams rlp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT , DensityUtilHelps.Dp2Px(this,25) );
codeBtn.setLayoutParams( rlp );
}
}
布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="40dp"
android:orientation="vertical"
>
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none"
android:background="@null"
>
<RadioGroup
android:id="@+id/gadiogroup"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="10dp" >
</RadioGroup>
</HorizontalScrollView>
</LinearLayout>
</LinearLayout>
color_radiobutton.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_checked="true" android:color="@color/whitecolor"/>
<!-- not selected -->
<item android:state_checked="false" android:color="@color/buttom_tv"/>
</selector>radio_group_selector.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_checked="true"><shape>
<!-- 这个是选中的 设为true -->
<solid android:color="@color/toubu" />
<!-- 这个是按压的颜色 -->
<stroke android:width="1dp" android:color="@color/toubu" />
<corners android:radius="10dp" />
<!-- 四角的弧度 -->
</shape></item>
<!-- 这个是未选中的状态 -->
<item android:state_checked="false"><shape>
<!-- 这个是按压状态的 设为true -->
<solid android:color="@color/gray" />
<!-- 这个是按压的颜色 -->
<stroke android:width="1dp" android:color="@color/gray" />
<corners android:radius="10dp" />
<!-- 四角的弧度 -->
</shape></item>
</selector>
用到的几个颜色如下:
<color name="whitecolor">#ffffff</color>
<color name="buttom_tv">#484747</color>
<color name="toubu">#f4692a</color>
<color name="gray">#d3d3d3</color>
效果图片如下:
有需要的可以看看
相关文章推荐
- Android 代码中动态为RadioGroup添加RadioButton
- android 动态添加组件(RadioGroup 添加RadioButton和其他组件的一些问题)
- android中radioGroup动态添加radioButton
- Android 动态生成 radiobutton 解决 radiogroup 多行显示的问题 单选
- RadioGroup动态添加RadioButton,RadioButton设置默认选中第一个,点击其他的RadioButton第一个不再选中,第一个不再选中
- 动态添加RadioGroup组件的RadioButton出现多选状况解决
- RadioGroup动态添加RadioButton,并且获得事件
- Dialog中存在radiogroup动态添加radiobutton的ID问题
- RadioGroup动态添加RadioButton,并且获得事件
- 自定义RadioGroup动态添加RadioButton,并获取选中radioButton的位置
- RadioGroup中动态添加RadioButton,RadioButton状态紊乱
- Android开发--控件之RadioGroup、RadioButton、CheckBox、Toast
- android自定义RadioGroup实现可以添加多种布局
- Android开发之四(五):常用控件之单项选择(RadioGroup和RadioButton)
- android自定义RadioGroup实现可以添加多种布局
- Android RadioGroup和RadioButton案例及详解
- Android UI控件之RadioGroup、RadioButton
- Android RadioGroup和RadioButton案例及详解
- Android控件系列之RadioButton与RadioGroup使用方法 详细出处参考:http://www.jb51.net/article/31799.htm
- android应用开发揭秘例example4-7笔记(RadioGroup和RadioButton的使用与改进)