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

如下图:


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

下面看代码:

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>  

效果图片如下:

                 


有需要的可以看看



  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值