自定义Switch开关(selector+shape样式开发)

1. Switch控件的基本使用

(1) 相关属性


android:switchMinWidth:设置开关的最小宽度 
android:switchPadding:设置滑块内文字的间隔 
android:switchTextAppearance:设置开关的文字外观
android:text:设置开关的名称
android:textStyle:文字风格(粗体、斜体等)
android:showText:设置on/off的时候是否显示文字(boolean) 
android:textOff:按钮没有被选中时显示的文字 
android:textOn:按钮被选中时显示的文字 
android:thumb:滑块的图片
android:track:轨道的图片 
android:splitTrack:是否设置一个间隙,让滑块与底部图片分隔(boolean)

(2) 使用示例


(3) 原生效果


关闭.png

开启.png

(4) 开关监控回调

switchProduction.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
               if(!buttonView.isPressed()){ // 每次 setChecked 时会触发onCheckedChanged 监听回调,而有时我们在设置setChecked后不想去自动触发 onCheckedChanged 里的具体操作, 即想屏蔽掉onCheckedChanged;加上此判断
                    return;
               }       
       
               if(isChecked){}

            }
        });

2. 自定义 Switch开关样式


(1) thumb_selector.xml:按钮样式



    
    

  • thumb_on.xml


    
    
    
    

  • thumb_off.xml


    
    
    
    

(2) track_selector.xml:轨道样式



    
    

  • track_on.xml


    
    


  • track_on.xml


    
    

tips:Switch自定义样式,轨道的宽度会随着开关按钮的宽度自动变化,如果想要修改轨道的宽度,修改开关按钮的宽度就可以了;默认情况下开关按钮和滑动轨道的高度是一样的(并且在xml文件中对轨道的宽高设置是无效的),如果想要修改轨道的高度,即

自定义Switch样式.png

  • 轨道高度低于开关按钮高度(第一个效果):轨道增加一个透明的边框
  • 轨道高度高于开关按钮高度(第二个效果):开关按钮增加一个透明的边框

3. 拓展

  • Android 代码实现switch自定义效果

你可能感兴趣的:(自定义Switch开关(selector+shape样式开发))