2016-11-09 71 views
-2

我們有一個listview內的複選框,其背景圖像需要根據listview項目的內容進行更改,例如gmail電子郵件列表視圖。以編程方式更改可繪製xml內容

我們的做法,現在是使用android:button="@drawable/startcheckbox"選項,其中startcheckbox是在繪製文件夾包含XML設置複選框背景:

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_checked="false" android:drawable="@drawable/star_rate_white_54x54" /> 
     <item android:state_checked="true" android:drawable="@drawable/star_rate_yellow_54x54" /> 
     <item android:drawable="@drawable/star_rate_white_54x54" /> <!-- default state --> 
    </selector> 

我的問題是我們如何能夠改變state_checked="false"state_checked="true"從內該列表視圖正在被填充的片段。

+0

您無法在android上以編程方式更改xml資源文件的內容。 – njzk2

+0

使用不同的資源文件 – njzk2

+0

查看'StateListDrawable'文檔 – pskink

回答

0

通過Drawable.mutate()改變drawable,然後你可以改變任何你想要的。

一般來說,雖然我發現如果你想用drawable來做任何程序化的事情而不是縮放,你最好避免使用xml和使用代碼和自定義drawable。

+0

不是真的,'StateListDrawable'的API非常有限,實際上你只能添加一個新的狀態到:'addState(int [] stateSet,可繪製的drawable)' – pskink

+0

Ive done它之前,我會看看我是否可以挖掘代碼。我想我超越了同一個國家? –