Min sdk моей заявки был GingerBread, и у меня была та же проблема, в конце концов я нашел решение. Чтобы сделать совместимым во всех версиях для Android, я использовал два вырезаемых в папках res/drawable
, один для thumb
и один для track
. и назначьте их SwitchCompat
в java-коде, а не в xml. Вот код, который вы должны использовать.
SwitchCopmat
виджет:
<android.support.v7.widget.SwitchCompat
android:id="@+id/label_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
вытяжки для большого пальца, switch_compat_thumb.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:bottom="@dimen/switch_compat_thumb_margin"
android:left="@dimen/switch_compat_thumb_margin"
android:right="@dimen/switch_compat_thumb_margin"
android:top="@dimen/switch_compat_thumb_margin">
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<shape android:shape="oval">
<size
android:width="@dimen/switch_compat_thumb_size"
android:height="@dimen/switch_compat_thumb_size"/>
<solid android:color="@android:color/red"/>
</shape>
</item>
<item>
<shape android:shape="oval">
<size
android:width="@dimen/switch_compat_thumb_size"
android:height="@dimen/switch_compat_thumb_size"/>
<stroke
android:width="@dimen/switch_compat_thumb_stroke_width"
android:color="@android:color/red"/>
<solid android:color="@android:color/transparent" />
</shape>
</item>
</selector>
</item>
вытяжки для track
, switch_compat_track.xml
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/switch_compat_track_radius"/>
<stroke
android:width="@dimen/switch_compat_track_stroke_width"
android:color="@android:color/red"/>
<solid android:color="@android:color/transparent" />
, а затем, после нахождения его в Java, назначить thumb
и track
к SwitchCompat
в Java-код:
final SwitchCopmat switchCompat = (SwitchCopmat) findViewById(R.id.label_switch);
//add thumb and track drawable in java since it doesn't work on xml for gingerbread
switchCompat.setThumbDrawable(getResources().getDrawable(R.drawable.switch_compat_thumb));
switchCompat.setTrackDrawable(getResources().getDrawable(R.drawable.switch_compat_track));
возможно дубликат [Switchcompat не отображая переключатель] (http://stackoverflow.com/ Вопросы/26563986/switchcompat-not-display-the-switch) –
Принятый ответ: использовать родительский элемент 'Theme.AppCompat', но я использую это только' Theme.AppCompat.NoActionBar' (используя панель инструментов). – user3677365
Как насчет копирования 9patch и других файлов в проект и заставить его работать? Только если у вашего проекта нет никаких проблем. –