2010-06-08 34 views
16

我正在寻找一种简单的方法让用户查看他们为BAC计算器准备了多少饮料。如何在现有布局内的Java代码中创建ImageView?

图片的应用程式:

PICTURE OF THE APP

在按钮按下,我想的图像被添加到屏幕上,直接在旋转器和用左对齐。当我再次按下按钮时,我想要将另一个图像添加到屏幕上。

所以,如果我按下添加啤酒按钮,一个可绘制的啤酒会出现在微调下面。如果我再次按下添加啤酒按钮,我想要在那里有两个可调节的啤酒,最好是从右侧添加啤酒。

(同样,让他们达到他们的宽度限制,缠绕,并在左边重新开始,而是一个完整的线下方,将是真棒)

我无法弄清楚如何做到这一点。我认为在代码中添加一个ImageView到一个相对布局(因为它需要被定位在右边)是最好的路线,但是如果在xml中可能的话,我会非常乐意使用它。任何帮助?

回答

39

在按钮的单击回调中,创建一个ImageView对象,设置瓶子图像并对其进行定位。例如(我假设你的元素的名称):

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); 

我没有测试过这一点,你要知道,但它应该给你一个良好的开端。您可能需要将其他参数添加到ImageView,并可能添加到LayoutParams以使其看起来不错,并追踪显示多少瓶等等。

+0

啊!几乎!只有最上面的一行“ImageView iv = new ImageView(this);”抛出异常“构造函数ImageView()未定义。” – 2010-06-08 17:54:38

+0

我可以将“this”替换为“null”,它会运行但不会显示图片... – 2010-06-08 18:32:38

+0

啊,是的,它在回调中,所以它缺少适当的上下文。将“this”替换为“ParentActivity.this”,其中ParentActivity是您设置侦听器的Activity类。 – 2010-06-08 19:56:59