2014-10-25 2 views
13

Я пытаюсь использовать последний appcompat, который был обновлен для материального дизайна в моем приложении, чтобы показать вид коммутатора, как показано в Lollipop (http://android-developers.blogspot.in/2014/10/appcompat-v21-material-design-for-pre.html), проблема заключается в том, что переключатель не отображается. Мой SDKmin составляет 14 и Макс 21. Я использую следующий код в макете:Switchcompat не отображает коммутатор

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:id="@+id/fragment_scheduler" 
    tools:context="com.stackoverflow.ranjith.androidprojdel.SchedulerUI"> 

<android.support.v7.widget.SwitchCompat 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="switch" 
     app:showText="false" /> 

    <Button 
     android:layout_width="match_parent" 
     android:text="start" 
     android:id="@+id/start" 
     android:layout_height="wrap_content" /> 
</LinearLayout> 

build.gradle:

dependencies { 
    compile 'com.android.support:cardview-v7:+' 
    compile 'com.android.support:recyclerview-v7:+' 
    compile 'com.android.support:palette-v7:+' 
    compile 'com.android.support:support-v4:+' 
    compile "com.android.support:appcompat-v7:21.0.+" 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
} 
+0

Это весь макет? Какое представление добавляется SwitchCompat? – ianhanniballake

+0

Нет. Также есть кнопка в макете. Он находится в пределах линейного выхода. Я добавил весь макет – Psypher

+0

Любые представления о том, как заставить это работать? – Psypher

ответ

14

У меня была такая же проблема, но сегодня почему-то switchcompat работал в моем образце , Я думаю, что есть проблема со стилем приложения, то родитель должен быть установлен:

Theme.AppCompat 
+0

Спасибо ..Это работает. – Psypher

+4

Это именно то, что я установил, и он не работает ни на одном устройстве pre-KitKat. Вид просто не отображается вообще - нет текста, нет переключателя, ничего. – psyren89

+1

У меня такая же проблема! Я установил действия Theme to Theme.AppCompat (ну, я пробовал со всеми availebale Themes, например Theme.AppComapt.Light.DarkActionBar), к сожалению, он не работает! – sockeqwe

19

Я не уверен, что это ошибка в библиотеке поддержки, но вы должны убедиться, что контекст для вашего развёртывания макета является тематическим.

  1. Убедитесь, что ваша деятельность темы Theme.AppCompat как родитель
  2. Если вы используете раздувать SwitchCompat в ListView или RecyclerView вы должны убедиться, что вы LayoutInflater экземпляры и использовать в вашем адаптере создается с тематическим контекстом. Вы можете получить тематический контекст вызова:. Activity.getSupportActionBar() getThemedContext()
+3

Wow ... просто ничего себе. Я использовал applicationContext, поскольку я все время использую его. Чтобы раздуть его с контекстом активности, этот трюк для меня. Благодаря! – JacksOnF1re

+1

Это было, по-видимому, это ... Меня разоблачает, потому что мне не подходит контекст активности ... +1 – Joakim

+1

Я потратил день на это, повторяю целый ДЕНЬ! То, что @ JacksOnF1re говорит, было моей проблемой. Когда я инициализировал адаптер, я передавал 'getApplicationContext()', теперь я изменил его на MyActivity.this, и он работает как шарм ... Strage - это то, что я правильно это сделал и работал некоторое время, но сделал некоторые изменения в какой-то момент ... – Apostrofix

1

В качестве альтернативы, вы можете использовать

android:theme="@style/Theme.AppCompat"

На ваш контроль

Смежные вопросы