2013-05-19 4 views
28

mam rozciągliwej pliku xml (background.xml):zmienić kształt kolorem w czasie wykonywania wewnątrz rozciągliwej xml używany jako tło

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape> 
     ........... 
     </shape> 
    </item> 

    <item android:id="@+id/shape_id"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#ffefefef" /> 
     </shape> 
    </item> 

</layer-list> 

używany przez LinearLayout:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="@drawable/background" 
    android:id="@+id/layout_id" 
    > 

teraz muszę aby zmienić kształt jednolity kolor shape_id w środowisku wykonawczym na podstawie niektórych warunków. Jak to zrobić?

+0

no nie sądzę jest możliwe – Raghunandan

+7

Niemożliwe jest niczym – AndroidGecko

Odpowiedz

59

Znaleziony przeze mnie:

View v = findViewById(R.id.layout_id); 

    LayerDrawable bgDrawable = (LayerDrawable)v.getBackground(); 
    final GradientDrawable shape = (GradientDrawable) bgDrawable.findDrawableByLayerId(R.id.shape_id); 
    shape.setColor(----); 
+3

Czy macie jakiś pomysł jak zaimplementować takie same na RemoteView dla widżetów? Dzięki. – rxlky

+0

Niestety, ale jeszcze nie miałem okazji pracować z RemoteView .. –

+0

@ MV1 Jest to możliwe w widoku zdalnym. Ponieważ nie działa. Możesz mi pomóc http://stackoverflow.com/questions/24545857/how-to-change-remote-view-background-in-runtime?noredirect=1#comment38013228_24545857 –

Powiązane problemy