2013-09-06 7 views
6

Mam problem z dostosowaniem wyglądu widżetu Przełącznik systemu Android. Mam niestandardowe rysunki xml, które chcę użyć dla kciuka (mała część przycisku, która zazwyczaj mówi "Włącz" lub "Wyłącz") i ścieżkę (tło, z którego kciuk się ślizga). Kiedy ustawiam kciuk za pomocą androida: kciuk, działa dobrze. Kiedy ustawiam ścieżkę (niezależnie od tego, czy kciuk jest ustawiony), przełącznik zniknie całkowicie i pozostawi mi tylko tekst.Przełącznik Android Widget: Ustawienie Androida: ścieżka powoduje, że kciuk i ścieżka się nie wyświetlają

Oto mój kod gdy tylko kciuk jest stosowany:

<com.blahblahblah.blah.CustomSwitch 
    android:id="@+id/switch_1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOff="Off" 
    android:textOn="On" 
    android:text="Something Awesome" 
    android:textColor="@android:color/black" 
    android:thumb="@drawable/custom_switch_thumb" /> 

Oto jak to wygląda w oknie podglądu:

enter image description here

I z toru zastosowanej:

<com.blahblahblah.blah.CustomSwitch 
    android:id="@+id/switch_1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOff="Off" 
    android:textOn="On" 
    android:text="Something Awesome" 
    android:textColor="@android:color/black" 
    android:track="@color/track_color" /> 

Okno podglądu z zastosowanym torem:

enter image description here

Dla odniesienia używam Android Studio 0.2.3 na OSX 10.7.5.

Odpowiedz

20

Po prostu natknąłem się na ten sam problem i znalazłem poprawkę na HoloEverywhere issue tracker. Musisz ustawić <size> kształtu ciągliwego XML, którego używasz.

Nie działa (widżet jest tam i mogę wchodzić w interakcje z nim, ale nie widzę go, jest ukryty):

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <solid android:color="@color/black_50" /> 
</shape> 

robocza (nie dodaje <size>):

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <solid android:color="@color/black_50" /> 
    <size android:width="56dp" android:height="20dp" /> 
</shape> 
+0

Musiałem tylko dodać wysokość, aby to naprawić. na przykład RobB

0

Ogólnie tylko do zmiany obrazu, którego nie trzeba poddawać kontroli, można ją np. z atrybutem stylu.

Na temat Twojego problemu istnieje kilka elementów sterujących, które mogą wymagać odrysowywania, a nie zwykłego koloru. W definicji sterowania (część xml) można po prostu zdefiniować, że dozwolone jest odniesienie, ale nie można go ograniczyć do odwołań do rysowania. Więc unikaj bezpośredniego używania kolorów. Jeśli nie chcesz dodawać obrazu, możesz również zdefiniować go za pomocą xml, ale pamiętaj, że to nie działa we wszystkich przypadkach.

+0

Dzięki za odpowiedź. Wiem, że nie muszę podklasy kontrolować, ale robię to w całej tablicy dla tej konkretnej aplikacji. Nie powinno to wpływać na nic, szczególnie w tym momencie, ponieważ moje podklasy tylko nadpisały konstruktory, które po prostu nazywają super (...) i nie robią nic więcej. Próbowałem rysować i tylko kolor. Muszę jeszcze znaleźć przypadek, w którym kolor * nie * działa, gdy preferowany jest losowanie. Zawsze działa we wszystkich innych przypadkach. W tym konkretnym przypadku, za pomocą ciągnięcia lub koloru, żaden z nich nie działa. Działa dobrze dla kciuka, ale nie dla toru. –

Powiązane problemy