如果API已更改,请在开关和复选框之间切换

时间:2014-04-25 17:44:38

标签: android xml android-layout

我希望在API小于14时在复选框和切换之间切换我希望当API超过14时出现复选框我希望切换出现我尝试了很多导入切换到API少于14但我可以& #39; t如果任何人可以帮助我将开关导入到少于14的API或帮助我为不同的API制作布局

2 个答案:

答案 0 :(得分:0)

您可以通过按以下方式检查Build.VERSION.SDK_INT以编程方式处理此情况

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
    // show Switch
} else {
    // show CheckBox
}

或者您可以为不同的API级别创建不同的布局XML,并将它们放入相应的布局文件夹中,如下所示

res/layout/mylayout.xml       (API Level 8+)
res/layout-v11/mylayout.xml    (API Level 11+)
res/layout-v14/mylayout.xml   (API Level 14+)

答案 1 :(得分:0)

使用资源文件夹作为默认使用CheckBox,使用Switch作为API级别14或更高版本。

res/layout/compound_button.xml

<CheckBox
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" />

res/layout-v14/compound_button.xml

<Switch
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" />

然后,您可以在其他布局中加入compound_button,例如activity_main.xml

<include
  android:id="@+id/turbo"
  layout="@layout/compound_button" />

由于CheckBoxSwitch都扩展了CompoundButton,因此您可以在Java代码中获得此值:

CompoundButton turbo = (CompoundButton) findViewById(R.id.turbo);
if (!turbo.isChecked()) {
  // Slow down the computer
}

观看我的演讲以获取更多信息(从21:25开始): http://www.infoq.com/presentations/android-fragmentation-myth