Android ICS小部件(切换)和旧版本

Zay*_*ige 2 android android-widget

是否可以为ICS版本设置一个开关小部件,但是有一个用于预ICS的复选框?如果是这样,怎么样?

我不担心其他组件,只有开关.

我的解决方案

看到switch和checkbox都从CompoundButton继承,我就是这么做的

((CompoundButton)findViewById(R.id.swTax)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            calculateValues();
        }
    });
Run Code Online (Sandbox Code Playgroud)

Luk*_*eau 6

通过将ICS版本放置在单独的布局文件夹中,例如,为ICS版本创建单独的布局XML文件layout-v14.要防止大量重复的XML,请使用一个主布局文件并包含小部件.生成的文件结构如下所示:

  • 布局
    • mylayout.xml
    • widget.xml
  • 布局-V14
    • widget.xml

mylayout.xml你会是这样的:

<include layout="@layout/widget" />
Run Code Online (Sandbox Code Playgroud)

Activity此布局,您将有任何互动建立与任前检查版本,以及CheckBoxSwitch插件:

int version = android.os.Build.VERSION.SDK_INT;
if (version >= 14) {
    // get your Switch view and set up listeners etc
}
else {
    // get your CheckBox view and set up listeners etc
}
Run Code Online (Sandbox Code Playgroud)

  • 另一个想法是使用布局xml并在代码中使用超类型的CompoundButton,然后您不需要执行版本逻辑,但可以访问大多数方法,如setChecked和setOnCheckedChangeListener.CompoundButton switch =(CompoundButton)findViewById(R.id.switch); (7认同)
  • 您可能想要`layout-v14`和`case 14:case 15:`因为ICS的第一个版本实际上是14. (2认同)