2017-03-22 4 views
0

Ich habe eine Anwendung, die ein ausgewähltes Bild aus der Galerie Benutzer nehmen und es als ihren Hintergrund in der App angezeigt werden soll. Ich habe den folgenden Code erfolgreich verwendet.setBackground von Bitmap API 22+

Obwohl, seit ich meine App auf API 22 aktualisiert habe funktioniert es nicht mehr. Ich habe herausgefunden, wie man den Hintergrund setzen mit

if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { 
    llmain.setBackgroundDrawable(drawable); 
} else if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) { 
    llmain.setBackground(drawable); 
} else { 
    llmain.setBackground(ContextCompat.getDrawable(this, drawable)); 
} 

Aber es funktioniert nicht, da die ContextCompat.getDrawable() Aufruf zum Kontext und ein int und nicht Kontext und ein BitmapDrawable.

Antwort

0

Kleine Änderung Code Ich hoffe, es Hilfe für Sie

Aktualisiert:

Uri selectedImage = data.getData(); 
    String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null); 
    cursor.moveToFirst(); 
    int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
    String picturePath = cursor.getString(columnIndex); 
    cursor.close(); 
    Bitmap bitmap = BitmapFactory.decodeFile(picturePath); 
    BitmapDrawable background = new BitmapDrawable(getApplicationContext().getResources(),bitmap); 
    llmain.setBackground(background); 
+0

dies nicht funktioniert aufgrund des Ziel für die Bitmap ein Linearlayout zu sein und nicht ein Image – RhysBailey21

+0

@RhysBailey meine aktualisiert am überprüfen .. – Joy

+0

nicht diese immer noch nicht funktionieren. Es gibt mir nur einen leeren weißen Hintergrund. Ich bin mir jetzt nicht sicher, ob es etwas mit dem Abruf des Bildes oder der Einstellung des Hintergrundteils zu tun hat. – RhysBailey21

0

Set Bitmap als Hintergrund für lineares Layout.

Direkt können Sie nicht Bitmap gesetzt Layout so sollten Sie BitmapDrawable verwenden, die Bitmap zu konvertieren drawable.

BitmapDrawable background = new BitmapDrawable(bmImg); 
linearLayout.setBackgroundDrawable(background); 
+0

Diese Methode wird abgeschrieben. Seit API 22 können Sie das nicht mehr auf neueren Geräten tun. Es funktioniert für API 22 oder weniger – RhysBailey21

+0

ja, Sie können linearLayout.setBackground (Hintergrund) verwenden; FYI: öffentliche void setBackground (Drawable Hintergrund) { werfen neue RuntimeException ("Stub!"); } – ViramP

Verwandte Themen