2012-05-16 8 views
5

Ora il problema inizia semplicemente impostando il colore di una forma. Ho creato una forma di rettangolo in drawable e impostarlo in ImageView come questoCome cambiare il colore del set di forme in vista immagine

<LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:layout_weight="0.15" 
     android:layout_marginRight="10dp" 
     android:gravity="center_vertical"> 
     <ImageView 
     android:id="@+id/iv_priority" 
     android:src="@drawable/case_priority" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

EDIT

mio case_priority.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
    <solid android:color="#009600" /> 
    <size android:width="30dp" 
     android:height="30dp" /> 
</shape> 

ora ho bisogno di cambiare il colore di questa forma . In realtà questo colore proviene dal servizio web e ho bisogno di cambiarlo. So My Domanda è: Come possiamo cambiare il colore di questa forma a livello di codice. e impostalo su imageview. Ho analizzato alcuni esempi in StackOverflow ma non sono in grado di cambiarlo in visualizzazione immagine. Per favore aiutatemi !!!! Grazie in anticipo.

EDIT:

Può essere che non era chiaro nella mia interrogazione, quindi basta un perfezionamento alla domanda. In realtà ho un ImageView dove imposto una fonte che è in realtà un drawable. Di default il suo verde come nel mio codice mostrato sopra. Ora il servizio web restituisce il colore di questa vista immagine che deve essere modificata di conseguenza, quindi non posso cambiarlo da xml durante il runtime, quindi ho bisogno di cambiarlo dal file java. Dal momento che sto usando la forma e la vista dell'immagine, .setBackground() non aiuterà molto qui. Quindi, quale può essere la soluzione probabile per questo. Grazie per la risposta e scusa per l'inconveniente.

+0

leggere la mia risposta! – techiServices

+0

Sì. So che devo andare solo a modo tuo, ma non so come procedere ulteriormente – Android

risposta

10

Grazie per tutte le risposte. Mi ha aiutato a rispondere.

Nel mio layout ho cambiato android:src="" to android:background="@drawable/case_priority" E nel mio file java I n = incluso questo codice: ->

 Resources res = getResources(); 
     final Drawable drawable = res.getDrawable(R.drawable.case_priority); 
     drawable.setColorFilter(Color.YELLOW, Mode.SRC_ATOP); 
     ImageView img = (ImageView)findViewById(R.id.iv_priority); 
     img.setBackgroundDrawable(drawable); 

il gioco è fatto. Spero che qualcuno.

+0

C'è un modo più semplice per avvicinarsi a questo se assegni la forma all'attributo '' ImageView'' '' src''. Vedi la mia risposta. –

+0

@ Black Devil, soluzione perfetta. Funziona correttamente. –

+0

Questa è una soluzione semplice e utile, grazie. –

3

aggiungere questo per vedere l'immagine

android:background="#152" // or some other color code 

Edit 1: a che fare con il codice fare questo

ImageView.setBackgroundColor(Color.parseColor("red")); // Or any color code like #000 , #987 

Edit 2:

ImageView Imgs = (ImageView) findViewById(R.id.iv_priority); 

Imgs.setBackgroundColor(Color.parseColor("ColorCode")); 
+1

Grazie per la risposta, signore, ma ho il colore e già l'ho messo in forma. Ma ho bisogno di cambiarlo a livello di codice, tramite file java. – Android

+0

passare attraverso l'aggiornamento – Trikaldarshi

+0

Sì signore, l'ho fatto ma ora manca la vista dell'immagine. – Android

2

IimageView.setBackgroundColor ("# 152");

-1

Tutte le soluzioni suggeriscono di utilizzare lo sfondo di ImageView. Penso che questa non sia la soluzione desiderata. La domanda riflette già quale sarebbe un approccio intuitivo: applicare la forma all'attributo src.Per poi cambiare il colore della forma di programmazione si dovrebbe fare:

GradientDrawable drawable = (GradientDrawable) priorityImageView.getDrawable(); 
drawable.setColor(Color.RED); 

dato che la forma viene assegnato come nella domanda iniziale:

<ImageView 
    android:id="@+id/iv_priority" 
    android:src="@drawable/case_priority" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

Questo porta anche il vantaggio che è possibile impostare l'ImageView del sfondo separatamente dal suo contenuto.

+0

In questo modo non funziona. Dà nullException – Sahil

+1

Questa risposta mi ha aiutato, quindi generalmente funziona. –

0

Come Lars Blumberg's answer anche io non volevo cambiare lo sfondo, così ho applicato il seguente al codice per la mia immagine, dal momento che non ho avuto un GradientDrawable:

Drawable drawable = imageView.getDrawable(); 
drawable.setColorFilter(Color.CYAN, PorterDuff.Mode.MULTIPLY); 
Problemi correlati