用RadioGroup自定义选项卡

本例使用RadioGroup实现了一个类似Tab效果,点击title的时候文字颜色和下划线条作相应的变化,不支持左右滑动,本例属于Android最最基础的内容,作为新手可以用来了解下这个控件的使用方法。

实现方法:为RadioButton设置不同状态下的背景android:background。通过<selector />设置radioButton选中和未选中状态时不同的背景效果。

<RadioButton
                android:id="@+id/radio1"
                android:layout_width="
0dp"//和layout_weight="1"配合使用,控件宽度把占比进行分配""
                android:layout_height="fill_parent"
                android:layout_weight="1
“//三个RadioButton都设置为1,表示各占1/3
                android:background="@drawable/radio_button_background
"//自定义背景文件,下滑条--
                android:button="@null
"//这样设置可以去掉RadioButton的默认样式
                android:checked="true
"//默认选中"
                android:gravity="center
"//显示内容居中"
                android:text="最新"
                android:textColor="@color/red
"
                android:textSize="17.0sp" />


自定义背景资源文件radio_button_background.xml
这个文件定义在drawable文件夹下,文件内容指定了RadioButton在选中和未选中时显示的背景。该资源文件的作用就是将两个不同的背景资源组合在一起,并指明选中和未选中应该使用什么样的背景资源。

      
      

      
      

    
       
       
    
       
       


      
      

以上文件中又引用了两个自定义的背景文件,一个是选中时的背景(显示红色下滑条),一个是未选中时的 背景(灰色下滑条)。
选中时显示背景

     
     

     
     

    
      
      
    
      
      
        
       
       
            
        
        
        
       
       
    
      
      
    
      
      
    
      
      
    
      
      

        
       
       
        
       
       
            
        
        
        
       
       
    
      
      


     
     
未选中时显示背景

     
     

     
     
    
      
      
    
      
      
    
      
      
    
      
      
        
       
       
            
        
        
        
       
       
    
      
      
   
    
      
      
    
      
      

        
       
       
        
       
       
            
        
        
        
       
       
    
      
      


     
     

MainActivity.class

package com.example.testdemo;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class MainActivity extends Activity {

    private RadioGroup radioGroup;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        radioGroup = (RadioGroup) findViewById(R.id.radio_group);
        radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                for (int i = 0; i < radioGroup.getChildCount(); i++) {
                    ((RadioButton) radioGroup.getChildAt(i)).setTextColor(Color.BLACK);
                }
                RadioButton checkedRadio = (RadioButton) findViewById(checkedId);
                checkedRadio.setTextColor(Color.RED);
                switch (checkedId) {
                case R.id.radio1:
                    Toast.makeText(MainActivity.this, "你点击了第一个选项卡", 1000).show();
                    break;
                case R.id.radio2:
                    Toast.makeText(MainActivity.this, "你点击了第二个选项卡", 1000).show();
                    break;
                case R.id.radio3:
                    Toast.makeText(MainActivity.this, "你点击了第三个选项卡", 1000).show();
                    break;
                default:
                    break;
                }
            }
        });
    }
}

布局文件main_layout.xml

     
     

    
      
      

        
       
       
    
      
      

    
      
      

        
       
       

            
        
        

            
        
        

            
        
        
        
       
       
    
      
      


     
     

设置文字颜色,RadioButton在选中时,下边框颜色的变化是通过自定义图形来实现的,但文字颜色却使用代码来控制。文字颜色的变化也可以通过选中状态来控制,。
首先在res/文件夹下新建color文件夹,并创建文件radiobutton_textcolor.xml。文件路径为:res/color/radiobutton_textcolor.xml。

     
     

     
     

    
      
      
    
      
      
    
      
      


     
     
引用方法:<RadioButton ... android:textColor="@color/radiobutton_textcolor"/>即可。
整个效果的实现并不需要写一句代码,通过radionButton:background和android:textColor两个属性就可以实现。
源码下载:

<RadioButton
                android:id="@+id/radio1"
                android:layout_width="
0dp"//和layout_weight="1"配合使用,控件宽度把占比进行分配" "
                android:layout_height="fill_parent"
                android:layout_weight="1
“//三个RadioButton都设置为1,表示各占1/3
                android:background="@drawable/radio_button_background
"//自定义背景文件,下滑条--
                android:button="@null
"//这样设置可以去掉RadioButton的默认样式
                android:checked="true
"//默认选中 "
                android:gravity="center
"//显示内容居中 "
                android:text="最新"
                android:textColor="@color/red
"
                android:textSize="17.0sp" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wolf犭良

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值