2013-05-19 56 views
28

我有一個可繪製的XML文件(background.xml)繪製對象XML中:由所使用的LinearLayout在運行時改變形狀純色作爲背景

<?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> 

<?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" 
    > 

現在我需要基於某些條件在運行時更改固體顏色shape_id。這個怎麼做?

+0

不,我不認爲這是可能的 – Raghunandan

+7

一切皆有可能 – AndroidGecko

回答

59

發現我:

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

你有任何想法如何實現對遠程視窗widget的一樣嗎?謝謝。 – rxlky

+0

對不起,但我還沒有機會使用RemoteView .. –

+0

@ MV1這是可能的遠程視圖。因爲它不工作。你可以指導我http://stackoverflow.com/questions/24545857/how-to-change-remote-view-background-in-runtime?noredirect=1#comment38013228_24545857 –