ICS有一个Switch组件。它做我们需要的。那里有什么向后兼容(约)2.2?找不到任何明显的东西。
看起来有人建造了这个:
答案 0 :(得分:44)
Android支持版本21.0.0
的AppCompat库包含android.support.v7.widget.SwitchCompat
,以便为API v7提供兼容性。 https://developer.android.com/reference/android/support/v7/widget/SwitchCompat.html
用gradle包含它:
compile 'com.android.support:appcompat-v7:21.0.0'
它可以在这样的布局中使用:
<android.support.v7.widget.SwitchCompat />
此外,它还具有showText
属性,可以让样式更容易 - 本机andriod Switch
似乎缺少这种属性。
答案 1 :(得分:10)
Switch仅适用于4.0 +
如果你想创建一个使用4.0+设备上的开关的应用程序你需要做的是声明两个布局。 layout-v14中的第一个将是ICS设备上使用的内容。在你的布局文件夹中使用CheckBox。
在代码中,从交换机或复选框获取/设置数据时,请使用CompoundButton类。你会发现CompoundButton适用于此。
答案 2 :(得分:4)
如果无法做到这一点,你应该使用复选框,如下所述:
(幻灯片32)
答案 3 :(得分:4)
答案 4 :(得分:4)
以下是SwitchCompat
的示例要做的第一件事是确保将这些行添加到 build.gradle 然后同步。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.0.0'
}
其次创建一个示例Activity,在我的例子中我将其称为 SwitchActivity.java 。
public class SwitchActivity extends ActionBarActivity {
SwitchCompat mySwitch = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_switch);
// here is your switch
mySwitch = (SwitchCompat)findViewById(R.id.myswitch);
}
.....
}
最后创建你的版面,在我的情况下,我将其称为 activity_switch.xml 。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.neoecosystem.samplex.SwitchActivity">
<android.support.v7.widget.SwitchCompat
android:id="@+id/myswitch"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
</RelativeLayout>
答案 5 :(得分:0)
如果您使用的是holoeverywhere库,则可以在布局文件中使用类似的内容
<org.holoeverywhere.widget.Switch
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>