2013-08-10 14 views
5

Sto provando a modificare lo sfondo di un pulsante per mostrare lo stato di avanzamento di un processo in background in esecuzione. Io sto usando un disegnabile composta da due colori così ora ho bisogno di cambiare le proprietà di programmazione superiore e inferiore di quelle <item> s nel seguente strato-list:Modifica <item> proprietà a livello di codice

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

    <item android:bottom="20dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#FFFFFF" /> 
     </shape> 
    </item> 

    <item android:top="30dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="#000000" /> 
     </shape> 
    </item> 
</layer-list> 

non sto essere in grado di selezionare il <item> elementi e modificarli dal codice java.

risposta

0

La modifica dell'XML non è di alcuna utilità in quanto Android non li utilizza in fase di runtime. Invece, dai uno sguardo allo LayerDrawable perché è ciò che viene creato dal tuo XML e usato in Runtime.

Quindi in pratica si può fare qualcosa di simile e continuare da lì: LayerDrawable ld = (LayerDrawable) mButton.getBackground();

A un modo migliore/più semplice tuttavia, probabilmente sarebbe creare la propria classe Drawable, che sarebbe piuttosto semplice in quanto si hanno solo due rettangoli da disegnare.

+0

Una classe Drawable personalizzata era la soluzione migliore. – alvarovmz

0

Basta creare lo stesso file xml con altri valori di elemento e impostare un nuovo sfondo per il pulsante. Sembra che non puoi cambiare questi valori in runtime.

+0

Devo essere in grado di impostare valori specifici per mostrare lo stato corrente dell'attività in background. Questo non può essere possibile con un altro file xml statico. – alvarovmz

Problemi correlati