2013-05-31 13 views
5

Mam następujący plik XML:Android niestandardowy atrybut xml tło wyślij

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#FFFFFF"/> 
    <corners android:radius="10dp"/> 
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> 
</shape> 

jak widać, wszystko to jest kształt z zaokrąglonymi narożnikami. Używam go dla tła w schematach działań w następujący sposób:

android:background="@drawable/rounded_corners" 

Kształt w pliku jest obecnie ustawiony na biały. W różnych układach potrzebuję różnych kolorów. Czy muszę utworzyć inny plik xml kształtu dla każdego koloru? Potrzebuję sposobu, aby po prostu określić w układzie, jaki kolor wysłać do tła, i w ten sposób mogę użyć tego samego xml dla dowolnego koloru, jaki chcę.

Dzięki.

+0

To może być to, czego szukasz: http://stackoverflow.com/questions/11376516/change-drawable-color-programmatically – TronicZomB

+0

Szukam sposobu ustawienia go za pomocą xml. Coś w rodzaju background = "red" src = "drawable .." – Meir

+0

W takim przypadku nie sądzę, aby było to możliwe i potrzebujesz wielu kształtów. Chociaż mógłbym się mylić, w takim przypadku chciałbym wiedzieć, jak to zrobić :) – TronicZomB

Odpowiedz

1
Do I need to create a different shape xml file for each color? 
  • Tak, jeśli chcesz zastosować inny kolor dla różnych plików układ z layoutu pliku XML sama
  • Nie, Jeśli stosuje się inny kolor dla różnych plików układu z jego java (aktywność) plik.

rozwiązanie dla opcji 2:

// kształt odkształcalne (rounded_corners.xml)

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#FFFFFF"/> 
    <corners android:radius="10dp"/> 
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> 
</shape> 

// plików układ

 <Button 
      android:id="@+id/mButton" 
      ... 
      android:background="@drawable/rounded_corners" 
      /> 

// Java (aktywny) plik

Button mButton = (Button) findViewById(R.id.mButton); 
ShapeDrawable rounded_corners = (ShapeDrawable)mButton.getBackground(); 
rounded_corners.getPaint().setColor(Color.RED); 

Mam nadzieję, że będzie to pomocne !!

+0

Dzięki ... Android powinien się trochę nauczyć od wpf ... – Meir

Powiązane problemy