2016-06-02 9 views
0

Ich versuche, ein Bild an der Spitze eines Seitenmenüs (DrawerLayout) im PNG-Format hinzuzufügen, importierte ich das Bild in "Drawable" Ordner und jetzt im Aufruf des Bildes zu sein dargestellt durch:Hinzufügen von .png Bild zu DrawerLayout gibt Fehler

android:src="@drawable/icone" 

icone ist der Name des Bildes, aber ich erhalte den folgenden Fehler:

FATAL EXCEPTION: main 
              Process: com.example.bugdroid.menuexe, PID: 5076 
              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bugdroid.menuexe/com.example.bugdroid.menuexe.MainActivity}: android.view.InflateException: Binary XML file line #17: Binary XML file line #17: Error inflating class android.support.design.widget.NavigationView 

ich möchte hier um das Bild zu setzen, auf dem weißen Quadrat:

Layout

Layout:

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/nav_header_height" 
    android:background="@drawable/side_nav_bar" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark" 
    android:orientation="vertical" 
    android:gravity="bottom"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:src="@drawable/icone" 
     android:id="@+id/imageView" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingTop="@dimen/nav_header_vertical_spacing" 
     android:text="Sintomas" 
     android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Duarte Andrade " 
     android:id="@+id/textView" /> 

</LinearLayout> 

Antwort

0

Problem ist .png nicht. Ihr Bild passt nicht in den verfügbaren Speicher. Dies bedeutet, dass die Speicherzuweisung das Heap-Limit überschreitet oder Ihr Prozess eine Speichermenge erfordert, die das Heap-Limit überschreitet. Da Sie mit begrenztem Arbeitsspeicher arbeiten, möchten Sie im Idealfall nur eine Version mit niedrigerer Auflösung im Arbeitsspeicher laden. Die Version mit niedrigerer Auflösung sollte mit der Größe der UI-Komponente übereinstimmen, die sie anzeigt. Ein Bild mit einer höheren Auflösung bietet keinen sichtbaren Vorteil, verbraucht aber dennoch wertvollen Speicher und verursacht zusätzlichen Leistungsaufwand aufgrund zusätzlicher Skalierung im laufenden Betrieb.

Lösung Verwenden Sie Glide Library. Zur Nutzung glide Bibliothek müssen Sie dies Ihre grandle Abhängigkeit hinzuzufügen: compile 'com.github.bumptech.glide:glide:3.7.0' und compile 'com.android.support:support-v4:19.1.0'

repositories { 
    mavenCentral() // jcenter() works as well because it pulls from Maven Central 
} 

dependencies { 
    compile 'com.github.bumptech.glide:glide:3.7.0' 
    compile 'com.android.support:support-v4:19.1.0' 
} 

Schließlich Ihr Bild laden:

ImageView imageview = (ImageView) findViewById(R.id.imageView); 
Glide.with(this).load(R.drawable.icone).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageView); 

To use Glide, read this

Wenn Glide nicht funktioniert, dann versuchen this Hoffe es hilft.