Обратно совместимый коммутатор

ICS имеет компонент Switch. Он делает то, что нам нужно. Есть ли что-нибудь обратно совместимое с (около) 2.2? Не могу найти ничего очевидного.

Похоже, кто-то построил это:

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

 mprabhat25 мар. 2013 г., 10:12
ссылка больше не работает

Ответы на вопрос(6)

 3c7110 мая 2013 г., 16:22
Я попробовал оба варианта, и они работают довольно хорошо, за исключением серьезной проблемы на некоторых устройствах: в первый раз, когда действие правильно тематически включает переключатели, приложение вылетает, потому что один из текстовых атрибутов не найден, что приводит к нулевому указателю на текстовое содержимое! как будто тема не была установлена, кто-нибудь сталкивался с этим и есть решение?
 Kevin Galligan25 мар. 2013 г., 15:40
 Snicolas10 мая 2013 г., 17:40
Об этом следует сообщить в выпуске github repo проекта. Не здесь.
 Snicolas25 мар. 2013 г., 18:08
Я попробовал первый, и он работает хорошо. Качество кода может быть лучше (почти нет javadoc, иногда трудно понять, трудно изменить). Но библиотека в целом хорошо сделана и предлагает переключение, которое может быть полностью тематическим. Мы получили хороший результат черезAndroid Holo Colours.

21.0.0 содержитandroid.support.v7.widget.SwitchCompat обеспечить совместимость с API v7.https://developer.android.com/reference/android/support/v7/widget/SwitchCompat.html

Включите это следующим образом:

compile 'com.android.support:appcompat-v7:21.0.0'

Это может быть использовано в макетах, как это:

<android.support.v7.widget.SwitchCompat />

Кроме того, он имеетshowText атрибут, облегчающий стилизацию - чего, по-видимому, нет в родном andriodSwitch.

 shuabing23 мар. 2017 г., 09:53
Это работает для меня, SwitchCompat показывает переключатель на 4.x sytle (не выглядит уродливым), как 5.x 6.x (выглядит хорошо), Это приятно изменить Switch на SwitchCompat!
Решение Вопроса

Если вы хотите создать приложение, которое использует коммутатор на устройствах 4.0+, вам нужно объявить два макета. Первый в layout-v14, который будет использоваться на устройствах ICS. В вашей папке макета используйте CheckBox.

В своем коде используйте класс CompoundButton при получении / настройке данных с переключателя или флажка. Вы обнаружите, что CompoundButton хорошо работает для этого.

 Lee12 мая 2012 г., 11:09
Я пытался сказать, что вы можете иметь код, который использует коммутатор на ICS, но использует флажок на Pre ICS. Но да, короче говоря, ответ «нет».
 Kevin Galligan06 сент. 2012 г., 05:26
Просто чтобы подтвердить, на сегодняшний день нет открытого ресурса совместимости. Если у меня выйдет время, могу его создать. Очень нравится, как это работает.
 Kevin Galligan12 мая 2012 г., 01:31
Я не понимаю ваш ответ. Я понимаю соглашения об именах папок. Я не понимаю, что вы получаете с CompoundButton. Таким образом, ответ «нет», правильно?

Прежде всего, убедитесь, что вы добавили эти строки в свой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>

вы можете использовать что-то подобное в файле макета

<org.holoeverywhere.widget.Switch
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
 />

Ваш ответ на вопрос