Как мне создать ImageView в Java-коде, в рамках существующего макета? - PullRequest
17 голосов
/ 08 июня 2010

Я ищу для пользователя простой способ узнать, сколько у него было напитков для калькулятора BAC.

Изображение приложения:

PICTURE OF THE APP

При нажатии кнопки мне бы хотелось, чтобы изображение добавлялось на экран, прямо под вращателем и с выравниванием по левому краю. Когда я снова нажимаю кнопку, я хочу, чтобы на экран было добавлено еще одно изображение.

Так что, если бы я нажал кнопку добавления пива, под вертушкой появится кружка пива. Если я снова нажму кнопку добавления пива, я хочу, чтобы под вертушкой находилось ДВА раскатываемых кружки пива, желательно с добавлением их справа.

(Кроме того, если они достигнут своего предела ширины, обернутся и начнут снова слева, но ниже полной строки, это будет УДИВИТЕЛЬНО)

Я не могу понять, как это сделать. Я предполагаю, что добавление ImageView в коде к относительной компоновке (потому что он должен быть расположен справа) было бы лучшим путем, но если бы это было возможно в xml, я был бы более чем счастлив использовать это. Любая помощь?

1 Ответ

46 голосов
/ 08 июня 2010

В обратном вызове нажатия кнопки создайте объект 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, чтобы он выглядел хорошо, а также отслеживать количество отображаемых бутылок и т. Д.

...