2010-06-08 4 views
16

Ich suche nach einer einfachen Möglichkeit für den Benutzer zu sehen, wie viele Getränke sie für einen BAC-Rechner hatten.Wie erstelle ich ein ImageView in Java-Code innerhalb eines bestehenden Layouts?

Bild der App:

PICTURE OF THE APP

On-Taste drücken, würde ich ein Bild wie auf den Bildschirm hinzugefügt werden, direkt unter dem Spinner und linksbündig. Wenn ich die Taste erneut drücke, möchte ich ein anderes Bild auf dem Bildschirm hinzufügen.

Also, wenn ich den Button Bier hinzufügen drücken würde, würde unter dem Spinner ein Zeichen für ein Bier erscheinen. Wenn ich noch einmal auf den Button "Bier hinzufügen" klicke, möchte ich, dass ZWEI Ziehbiere unter dem Spinner sind, vorzugsweise wenn sie von rechts hinzugefügt werden.

(Auch mit ihnen ihre Breitengrenze erreichen, Umwickeln und beginnen wieder auf der linken Seite, aber unterhalb einer vollen Linie, wäre genial)

Ich kann nicht herausfinden, wie dies zu tun. Ich nehme an, ein ImageView in Code zu einem relativen Layout (weil es rechts positioniert werden muss) wäre die beste Route, aber wenn es in Xml möglich ist, wäre ich mehr als glücklich, das zu verwenden. Irgendeine Hilfe?

Antwort

39

Klicken Sie im Rückruf auf die Schaltfläche, um ein ImageView-Objekt zu erstellen, das Flaschenbild festzulegen und es zu positionieren. Zum Beispiel (Ich gehe davon aus, die Namen Ihrer Elemente):

ImageView iv = new ImageView(this); 
iv.setImageResource(R.drawable.beerbottle); 
RelativeLayout rl = (RelativeLayout) findViewById(R.id.RelativeLayout01); 
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT, 
    RelativeLayout.LayoutParams.WRAP_CONTENT); 
lp.addRule(RelativeLayout.BELOW, R.id.ButtonRecalculate); 
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
rl.addView(iv, lp); 

ich nicht getestet haben, wohlgemerkt, aber es sollte Ihnen einen guten Start geben. Sie müssen wahrscheinlich andere Parameter zu ImageView und möglicherweise zu den LayoutParams hinzufügen, um es gut aussehen zu lassen und zu verfolgen, wie viele Flaschen angezeigt werden usw.

+0

Ah! Fast! Nur die oberste Zeile "ImageView iv = new ImageView (this);" löst eine Ausnahme aus "Der Konstruktor ImageView() ist nicht definiert." –

+0

ich kann "this" durch "null" ersetzen und es läuft aber dann wird das Bild nicht angezeigt ... –

+0

Ah ja, es liegt im Callback also fehlt es am passenden Context. Ersetzen Sie "this" durch "ParentActivity.this", wobei ParentActivity die Aktivitätsklasse ist, in der Sie den Listener festlegen. –

Verwandte Themen