2013-01-16 5 views
11

Ich muss ein einfaches Drawable Objekt mit der benötigten Farbe als Hintergrundfarbe erstellen, aber ich weiß nicht, wie ich es programmgesteuert ohne Verwendung eines XML-Schemas tun kann (ist das wirklich möglich?). Bitte, sagen Sie mir, ich brauche es für die Herstellung einer LayerDrawable und die Arbeit mit SeekBar (Hintergrund von SeekBar programmgesteuert ändern). Vielen Dank im Voraus.Wie erstellt man ein Drawable mit der benötigten Hintergrundfarbe programmatisch?

Antwort

29

Sie sollten versuchen, eine ColorDrawable verwenden. Es kann mit einer Farbe mit dem Konstruktor ColorDrawable(int color)

+0

Danke . Aber bitte, sag mir, wie kann ich Id für Drawable setzen? Ich muss "android: ID/Hintergrund" für eine neue ziehbare setzen – user1841247

+1

Ich verstehe nicht, was Sie versuchen zu tun. Wozu brauchst du die ID? Sie können "ColorDrawable" einfach zu Ihrem 'LayerDrawable' hinzufügen, indem Sie den Konstruktor' LayerDrawable (Drawable [] layers) 'verwenden. Sie benötigen keine ID für das ColorDrawable. Die ID des Layers kann dann mit 'LayerDrawable.setId (int index, int id) gesetzt werden' ' – Thrakbad

5

ColorDrawable werden Sie in Ihrem Fall hilfreich sein, können Sie Parameter color für Ihre Zeichen übergeben.

oder Sie können wie unten etwas tun:

ImageView imgStatus = (ImageView) findViewById(R.id.imgInfoIcon); 
// Load the icon as drawable object 
Drawable d = getResources().getDrawable(R.drawable.ic_menu_info_details); 

// Get the color of the icon depending on system state 
int iconColor = android.graphics.Color.BLACK 
if (systemState == Status.ERROR) 
    iconColor = android.graphics.Color.RED 
else if (systemState == Status.WARNING) 
    iconColor = android.graphics.Color.YELLOW 
else if (systemState == Status.OK) 
    iconColor = android.graphics.Color.GREEN 

// Set the correct new color 
d.setColorFilter(iconColor, Mode.MULTIPLY); 

// Load the updated drawable to the image viewer 
imgStatus.setImageDrawable(d); 

oben Code ist ursprünglich here geschrieben

+0

Vielen Dank. Aber bitte, sag mir, wie kann ich Id für Drawable setzen? Ich muss "android: ID/Hintergrund" für eine neue Zeichnungs – user1841247

+0

auf diese Weise können Sie nicht zur Laufzeit setzen, ist es besser, Funktion zu erstellen übergeben Sie Ihre Ansicht ID, und stellen Sie die entsprechende Farbe zu Ihrer Ansicht. – RobinHood

3

Wie es von @Thrakbad vorgeschlagen wird, können Sie ColorDrawable verwenden:

TextView textView = new TextView(this); 
    ColorDrawable colorDrawable = new ColorDrawable(0xFFFF0000); 
    textView.setBackgroundDrawable(colorDrawable); 
Verwandte Themen