0

我目前正在使用据称在 API 14 中出现的Switch Widget。我的项目设置为 15 的最小 API。我正在尝试更改 Switch 小部件轨道的背景OnCheckedChanged

但我收到一个错误,即 setTrackResource 需要至少 16 个 API .. 起初我以为我只需要更新我的支持库,但它在 v13 上

我不想@supress 这个警告?有办法解决吗?

cameraTypeSwitch = (Switch) findViewById(R.id.cameraTypeSwitch);
        cameraTypeSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // TODO Auto-generated method stub
                if (buttonView.isChecked()){
                    cameraTypeSwitch.setTrackResource(R.drawable.camera_track_camera);
                }
                else{
                    cameraTypeSwitch.setTrackResource(R.drawable.camera_track_video);
                }
            }
    });

我试图将可绘制的轨道设置为处于选中状态,如下所示:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@null" android:state_enabled="false"/>
    <item android:drawable="@drawable/camera_track_camera" android:state_checked="true"/>
    <item android:drawable="@drawable/camera_track_video" android:state_checked="false"/>

</selector>

但这似乎不起作用..无论如何可以动态更改 API 15 中的轨道背景

4

1 回答 1

2

来自安卓官方文档

public void setTrackResource (int resId)在 API 级别 16 中添加

所以你需要 API 16+ 才能使用setTrackResource(int)方法(即 minSDK 应该是 16 或更高)。没有解决方法,因为此方法在 API 15 或更低版本中不存在,除非您自己编写。

于 2014-05-06T15:10:38.480 回答