2013-05-22 11 views
5

chciałabym podać tylko raz w RES/wartości/styles.xml wielkości dwóch wyboru, a ich cztery kształt kanału alfaJak zdefiniować rozmiar rysunków w pliku stylu?

  1. RES/rozciągliwej/cb1_checked.xml
  2. RES/odkształcalne/cb1_unchecked.xml
  3. RES/odkształcalne/cb2_checked.xml
  4. res/odkształcalne/cb2_unchecked.xml.

W ten sposób rozmiar pojawi się jeden raz w stylu, a nie cztery w miniaturekach.

Żadna z dwóch poniższych prób nie działa. Czy możesz zaproponować rozwiązanie? (Jeśli widzisz, co jest nie tak z tymi dwiema próbami, wspomnij o tym.)

----------------------------- ----------------------------------- Próba 1 ----------- -------------------------------------------------- ---

wymienić

res/odkształcalne/cb1_checked.xml

<size android:width="24dp" 
     android:height="24dp" /> 

z

Res// wartości styles.xml

<item name="android:layout_width">24dp</item> 
<item name="android:layout_height">24dp</item> 

------------------------------- --------------------------------- Próba 2 ------------- -------------------------------------------------- -

Dodaj

res/wartości/styles.xml

<item name="android:background">cb_background</item> 

i zdefiniować tło rozciągliwej

RES/rozciągliwej/cb_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#00FF00"/> 
    <size android:width="24dp" 
      android:height="24dp" /> 
</shape> 

-------------------- -------------------------------------------- Dodano --- -------------------------------------------------- -----------

Oto pełny zestaw plików XML:

res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/MyLL" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <CheckBox 
     android:id="@+id/cb1" 
     style="@style/CB_style" 
     android:button="@drawable/cb1_selector" 
     android:height="@dimen/my24sp" /> 

    <CheckBox 
     android:id="@+id/cb2" 
     style="@style/CB_style" 
     android:button="@drawable/cb2_selector" 
     android:height="@dimen/my24sp" /> 

</LinearLayout> 

RES/wartości/style.xml

<style name="AppBaseTheme" parent="android:Theme.Light"> 
</style> 

<style name="AppTheme" parent="AppBaseTheme"> 
</style> 

<style name="CB_style" parent="@android:style/TextAppearance.Medium"> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:layout_weight">1</item> 
    <item name="android:layout_gravity">center_horizontal</item> 
    <item name="android:gravity">center</item> 
    <item name="android:checked">false</item> 
</style> 

Res/odkształcalne/cb1_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
      android:constantSize="true"> 

    <item android:state_checked="true" 
      android:drawable="@drawable/cb1_checked" /> 

    <item android:state_checked="false" 
      android:drawable="@drawable/cb1_unchecked" /> 

</selector> 

Res/odkształcalne/cb1_checked.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#FF0000"/> 
    <size android:width="24dp" 
      android:height="24dp" /> 
</shape> 

res/odkształcalne/cb1_unchecked.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#880000"/> 
    <size android:width="24dp" 
      android:height="24dp" /> 
</shape> 

(i podobnie dla selektora CB2 i sprawdzane/niezaznaczone kanału alfa)

Odpowiedz

6

Jest słaby roztwór, słaby w tym sensie, że android: szerokość i android: wysokość wciąż pojawiają się cztery razy, ale przynajmniej wymiar może być regulowana poprzez ustawienie tylko jednego parametru.

Dla każdego z czterech kanału alfa, dodać

<size android:width="@dimen/my24dp" 
     android:height="@dimen/my24dp" /> 

a także określenie wymiaru

RES/wartości/dimens.xml

<dimen name="my24dp">24dp</dimen> 

Więc pozostaje pytanie: Czy rozmiar nie jest określony w ogóle w rysunkach?

+0

Robię dosłownie to samo i ta odpowiedź działa. PO powinien zaakceptować tę odpowiedź. –

+0

Zrobiłem to samo, ale to nie jest praca. Mam następujący błąd: Błąd: Błąd: Szerokość (0) i wysokość (0) nie może być <= 0 ". Mam min skd tarket ustawiony na 19. – roroinpho21

+0

@ roroinpho21 To brzmi prosto, ale wszystko, co można tu zasugerować, byłoby po prostu zgadywaniem. Dokładnie sprawdź i opublikuj pytanie. – Calaf

0

można przechowywać wielkości jako Ressource w res/values/dimens.xml jak

<resources> 
    <dimen name="checkbox_width">24dp</dimen> 
</resources> 

i umieść tę wartość w swoich układach, takich jak

<CheckBox 
     android:layout_width="@dimen/checkbox_width" 
     android:layout_height="@dimen/checkbox_width" /> 
+0

To by to zrobiło, ale to nie działa. – Calaf

+0

naprawdę? jaki jest błąd? po utworzeniu nowego pliku dimens.xml powinieneś wyczyścić projekt ... niż java tworzy identyfikator referencyjny, aby uzyskać wartość z twoim @ dimen/checkbox_width – longilong

+0

Nie ma błędu. Nic nie pojawia się ani w Eclipse, ani w urządzeniu. Czy mógłbyś przejrzeć pełny zestaw plików, które dodałem i zobaczyć, czy jest coś, co sprawia, że ​​twoje rozwiązanie nie działa po mojej stronie? – Calaf