【问题标题】:Switch support in API 15API 15 中的开关支持
【发布时间】:2014-05-06 15:01:15
【问题描述】:

我目前正在使用Switch Widget,它应该是在 API 14 中出现的。我的项目设置为 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 中的轨道背景

【问题讨论】:

  • 您的 API 构建目标是什么?至少应为 16。

标签: android android-support-library android-switch


【解决方案1】:

来自Android official documentation

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

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

【讨论】:

  • 也就是说,无论如何,在我的选择器 xml 文件中,轨道要根据其所处的状态设置可绘制对象?
  • 我不明白你的问题
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2019-04-25
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
相关资源
最近更新 更多