Grafik Ressource zur Laufzeit tauschen

  • Hallo zusammen,


    ich würde gerne die dargestellte Grafik in einer TextView gegen eine andere tauschen bzw. auch verschwinden lassen wenn man auf einen Button klickt.


    In der main.xml sieht ein beispielhaftes LinearLayout so aus:



    <LinearLayout
    android:id="@+id/panel2"
    style="@style/panel"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="vertical" >


    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Panel No. 2"
    android:textStyle="bold" />


    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_green" />
    </LinearLayout>


    Angesprochen wird es in meiner App ganz normal:


    Code
    panel02 = (LinearLayout) findViewById(R.id.panel02);



    Nun würde ich in meiner App bei bestimmten Vorkommnissen gerne die ic_green gegen eine ic_blue tauschen. Lässt sich das irgendwie machen? Das entfernen der Grafik könnte ich zur Not durch eine leere Grafik simulieren.


    Folgendes führt leider nicht zum Ziel, da es nur den Background setzt und dann beide Grafiken hintereinander liegen:

    Code
    panel02.setOnClickListener(new OnClickListener() {
    			@Override
    			public void onClick(View v) {
    				panel02.setBackgroundResource(R.drawable.ic_blue);
    			}


    Gruß Philipp

  • Du musst das ImageView mit

    Java
    ImageView IV = (ImageView) findViewById(R.id.imageview1);


    ansprechen und dann kannst du das Bild auch wechseln mit

    Java
    IV.setImageResource(R.drawable.ic_blue);


    Dazu brauch das ImageView aber, wie im obrigen Beispiel, dann eine ID. ;)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

    Einmal editiert, zuletzt von Kogoro () aus folgendem Grund: Falsche Methode verbessert.

  • Du musst das ImageView mit

    Java
    ImageView IV = (ImageView) findViewById(R.id.imageview1);


    ansprechen und dann kannst du das Bild auch wechseln mit

    Java
    IV.setImageDrawable(R.drawable.ic_blue);


    Dazu brauch das ImageView aber, wie im obrigen Beispiel, dann eine ID. ;)

    Richtig ist, dass du die ImageView ansprechen musst und nicht das Layout. Falsch ist aber der Befehl

    Java
    IV.setImageDrawable(R.drawable.ic_blue);

    , da R.drawable.ic_blue einen Integer aus der R.java zurückliefert ;).
    Probier es mit:

    Java
    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_blue));
    ImageView IV = (ImageView) findViewById(R.id.imageview1)
    IV.setImageBitmap(bmp);


    Hoffe, ich hab mich jetzt nicht vertippt.

  • Stimmt da hab ich mich vertan.
    Die richtige Methode wäre:

    Java
    IV.setImageResource(R.drawable.ic_blue);

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!