web-dev-qa-db-ja.com

既存のレイアウト内でJavaコードでImageViewを作成するにはどうすればよいですか?

ユーザーがBAC計算機で飲んだ飲み物の数を簡単に確認できる方法を探しています。

アプリの写真:

PICTURE OF THE APP

ボタンを押すと、画面にスピナーのすぐ下に左揃えで画像が追加されます。もう一度ボタンを押すと、画面に別の画像が追加されます。

したがって、ビールの追加ボタンを押すと、スピナーの下にビールのドローアブルが表示されます。ビール追加ボタンをもう一度押した場合、スピナーの下にビールのドローアブルが2つあり、できれば右から追加されるようにします。

(また、それらを幅の制限に到達させ、折り返し、左から開始しますが、完全な行の下に再配置するのは素晴らしいことです)

これを行う方法がわかりません。 ImageViewを相対的なレイアウトにコードで追加すること(右に配置する必要があるため)が最適なルートになると思いますが、それがxmlで可能であれば、それを使用してうれしいです。助けがありますか?

17
Dan T

ボタンのクリックコールバックで、ImageViewオブジェクトを作成し、ボトルの画像を設定して配置します。例(要素の名前を想定しています):

ImageView imageView = new ImageView(this);
imageView.setImageResource(R.drawable.beerbottle);

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.RelativeLayout01);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT
);
layoutParams.addRule(RelativeLayout.BELOW, R.id.ButtonRecalculate);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);

relativeLayout.addView(imageView, layoutParams);

私はこれをテストしていません、あなたを気にしますが、それはあなたに良いスタートを与えるはずです。おそらく、見栄えを良くするために、ImageViewおよび場合によってはLayoutParamsに他のパラメーターを追加する必要があり、さらに、表示されているボトルの数などを追跡する必要があります。

46
Daniel Waechter