商城首页欢迎来到中国正版软件门户

您的位置:首页 >2.3.6 开关按钮ToggleButton和开关Switch

2.3.6 开关按钮ToggleButton和开关Switch

  发布于2026-08-12 阅读(0)

扫一扫,手机访问

本节引言:

这一节要聊的,是 Android 里两个很基础的 UI 控件:开关按钮 ToggleButton 和开关 Switch。很多人对这两个组件未必特别熟,但说到这儿,倒是很容易让人想起一种“早期项目常见操作”——比如某些应用里“是否仅在 WiFi 下联网”这样的开关,居然不是用现成的开关控件,而是直接拿 TextView 顶上;再让美工出两张切换前后的图,最后在代码里手动设置。说白了,就是点击 TextView 时先判断当前状态,再去切换对应的背景图……

说白了,这一节要讲的其实就是两个开关组件,只不过后面那个得等到 Android 4.0 及以上版本才能用。 也正因为如此,AndroidManifest.xml 里的 minsdk 必须设置为 >= 14,不然程序会直接报错。先别急着往下看,先看看这两个控件本身长什么样。 到了 Android 5.0 之后,这两个控件的视觉效果比早期版本确实顺眼了不少,下面先看一下 5.0 之前的样子:

5.0以前的ToggleButton和Switch:5.0版本:

好吧,鲜明的对比...接下来我们就来学习者两个控件的使用吧,其实两个的使用几乎是相同的。

开始之前贴下官方API先:Switch;ToggleButton

1.核心属性讲解:

1)ToggleButton(开关按钮)

可供我们设置的属性:

  • android:disabledAlpha:设置按钮在禁用时的透明度
  • android:textOff:按钮没有被选中时显示的文字
  • android:textOn:按钮被选中时显示的文字 另外,除了这个我们还可以自己写个selector,然后设置下Background属性即可~

2) Switch(开关)

可供我们设置的属性:

  • android:showText:设置on/off的时候是否显示文字,boolean
  • android:splitTrack:是否设置一个间隙,让滑块与底部图片分隔,boolean
  • android:switchMinWidth:设置开关的最小宽度
  • android:switchPadding:设置滑块内文字的间隔
  • android:switchTextAppearance:设置开关的文字外观,暂时没发现有什么用...
  • android:textOff:按钮没有被选中时显示的文字
  • android:textOn:按钮被选中时显示的文字
  • android:textStyle:文字风格,粗体,斜体写划线那些
  • android:track:底部的图片
  • android:thumb:滑块的图片
  • android:typeface:设置字体,默认支持这三种:sans, serif, monospace;除此以外还可以使用 其他字体文件(*.ttf),首先要将字体文件保存在assets/fonts/目录下,不过需要在Ja va代码中设置: Typeface typeFace =Typeface.createFromAsset(getAssets(),"fonts/HandmadeTypewriter.ttf"); textView.setTypeface(typeFace);

2.使用示例:

因为比较简单,所以我们把他们写到一起,另外,我们为Switch设置下滑块和底部的图片,实现 一个类似于IOS 7的滑块的效果,但是有个缺点就是不能在XML中对滑块和底部的大小进行设置, 就是素材多大,Switch就会多大,我们可以在Ja va中获得Drawable对象,然后对大小进行修改, 简单的例子:

运行效果图:

实现代码: 先是两个drawable的文件: thumb_selctor.xml:



    
    

track_selctor.xml:



    
    

布局文件:activity_main.xml:




MainActivity.ja va:

public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener{
private ToggleButton tbtn_open;
    private Switch swh_status;
@Override
    protected void onCreate(Bundle sa vedInstanceState) {
        super.onCreate(sa vedInstanceState);
        setContentView(R.layout.activity_main);
tbtn_open = (ToggleButton) findViewById(R.id.tbtn_open);
        swh_status = (Switch) findViewById(R.id.swh_status);
        tbtn_open.setOnCheckedChangeListener(this);
        swh_status.setOnCheckedChangeListener(this);
    }
@Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        switch (compoundButton.getId()){
            case R.id.tbtn_open:
                if(compoundButton.isChecked()) Toast.makeText(this,"打开声音",Toast.LENGTH_SHORT).show();
                else Toast.makeText(this,"打开声音",Toast.LENGTH_SHORT).show();
                break;
            case R.id.swh_status:
                if(compoundButton.isChecked()) Toast.makeText(this,"开关:ON",Toast.LENGTH_SHORT).show();
                else Toast.makeText(this,"开关:OFF",Toast.LENGTH_SHORT).show();
                break;
}
    }
}
本文转载于:https://www.runoob.com/w3cnote/android-tutorial-togglebutton-switch.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注