向后兼容的交换机

时间:2012-02-17 00:12:17

标签: android

ICS有一个Switch组件。它做我们需要的。那里有什么向后兼容(约)2.2?找不到任何明显的东西。


看起来有人建造了这个:

https://github.com/Prototik/KFramework-SW.git

6 个答案:

答案 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)

答案 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"
 />