您的位置:首页 > 移动开发 > Android开发

Android中RadioGroup在代码中动态添加子控件RadioButton

2016-10-26 16:24 337 查看
如下图:



我用红线圈出的地方,这个地方想来还得在代码中动态生成,因为个数你不确定

下面看代码:

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>

效果图片如下:


                 


有需要的可以看看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息