2017-01-16 3 views
0

Ich versuche, ein Hintergrundbild zu einem relativen Layout, das ich habe, zu setzen. Ich verwende setBackground und fragt nach einem Zeichen, nicht nach einem int. Ich kann es ein Zeichen geben und es gibt mir einen Fehler. Hier ein Abschnitt meines Codes.Ich versuche, ein Hintergrundbild eines relativen Layouts zu setzen

rl.setBackground(R.drawable.loginbackground3); 

Dies ist der Fehler, den ich bekomme.

setBackground (android.graphics.drawable.Drawable) in View cannot be applied to (int). 

Sehr verwirrt bitte helfen?

Antwort

1

Try this:

rl.setBackgroundResource(R.drawable.loginbackground3); 

oder wenn Sie wollen, In diesem Fall müssen Sie die Build-Version überprüfen (wenn Sie für niedrigere Versionen bauen).

final int sdk = android.os.Build.VERSION.SDK_INT; 
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { 
    rl.setBackgroundDrawable(getResources().getDrawable(R.drawable.loginbackground3)); 
} else { 
    rl.setBackground(getResources().getDrawable(R.drawable.loginbackground3)); 
} 
+0

Ich habe versucht mit rl.setBackgroundResource (R.drawable.loginbackground3); Und ich bekomme keine Fehler, aber es funktioniert nicht. Nichts passiert. Der Hintergrund ändert sich nicht –

1

Sie müssen den Zeichensatz mit dieser ziehbaren Referenz laden.

Drawable background = rl.getContext().getResources().getDrawable(R.drawable.loginbackground3); 
rl.setBackground(background); 

Beachten Sie, dass, wenn Sie die Support-Bibliotheken verwenden Sie die deprecation von getDrawable wie so lösen können:

Drawable background = ContextCompat.getDrawable(rl.getContext(), R.drawable.loginbackground3); 
rl.setBackground(background); 
+0

Im erhalte eine Fehlermeldung auf der Linie:.. Drawable background = rl.getContext() GetResources() getDrawable (R.drawable.loginbackground3); Der Fehler ist: android.content.Context android.widget.RelativeLayout.getContext() 'auf eine Null-Objekt Referenz –

0

// Ihr Layout vorausgesetzt wird relativelayout1 genannt:

RelativeLayout r1 = (RelativeLayout) findViewById(R.id.relativelayout1); 
r1.setBackgroundResource(R.drawable.sample); 
0

Wegen der Inkonsistenz der Bibliothek von Android selbst, Zuerst müssen Sie Methode getDrawable erstellen:

private Drawable getDrawable(int id) { 
    final int sdk = android.os.Build.VERSION.SDK_INT; 
    if (sdk >= android.os.Build.VERSION_CODES.LOLLIPOP) { 
    return ContextCompat.getDrawable(getContext(), id); 
    } else { 
    return getContext().getResources().getDrawable(id); 
    } 
} 

Dann , erstellen Methode setBackgroundView:

private void setBackgroundView(View v, int drawable_Rid) { 
    Drawable background = getDrawable(drawable_Rid); 
    final int sdk = android.os.Build.VERSION.SDK_INT; 
    if (sdk >= android.os.Build.VERSION_CODES.JELLY_BEAN) { 
    v.setBackground(background); 
    } else { 
    v.setBackgroundDrawable(background); 
    } 
} 

Und rufen schließlich die setBackgroundView mit ziehbar Namen wie folgt aus:

setBackgroundView(rl, R.drawable.loginbackground3); 
Verwandte Themen