动态添加视图

Dynamically adding view

我已经在互联网上搜索过,但还没有找到具体的操作方法。我大多没有看正确,所以不要开始 repost 和其他评论。只需将我引向令人反感的 post 或回答我的问题即可。谢谢。

如何将值动态添加到 xml 视图并将其添加到 activity。这应该使用我从 API.

获得的不同值多次完成

我目前正在做的是(这是在 onPostExecute 中的异步线程上):

RelativeLayout rl = new RelativeLayout(mContext);
            rl.setPadding(0, 0, 0, 10);
            ImageView img = new ImageView(mContext);
            img.setLayoutParams(new Toolbar.LayoutParams(Toolbar.LayoutParams.FILL_PARENT, Toolbar.LayoutParams.FILL_PARENT));
            img.setScaleType(ImageView.ScaleType.CENTER_CROP);
            //img.setMaxHeight(300);
            Picasso.with(mContext).load(imageURL[i]).into(img);
            rl.addView(img);
            TextView tv = new TextView(mContext);
            tv.setText(uri[i]);
            tv.setGravity(Gravity.CENTER | Gravity.BOTTOM);
            tv.setTextSize(20);
            tv.setBackgroundColor(Color.parseColor("#80000000"));
            tv.setLayoutParams(new Toolbar.LayoutParams(Toolbar.LayoutParams.FILL_PARENT, Toolbar.LayoutParams.WRAP_CONTENT));
            if(tv.getText()!= null) rl.addView(tv);
            rootView.addView(rl);

有没有更好的方法来做到这一点,以便我有更多的控制权,比如预定义的布局,我只是将不同的值添加到其中。 另外,如何使每个视图都可点击? (添加 onClick)

谢谢

首先,在为添加到 RelativeLayout 的内容设置 LayoutParams 时,您需要使用 RelativeLayout.LayoutParams 而不是 Toolbar.LayoutParams。

接下来,您需要确保您创建的 RelativeLayout 为要添加到的容器类型(rootView)设置了正确的布局参数。

使用 setOnClickListener 使每个视图都可点击,如下所示:

view.setOnClickListener(new OnClickListener()
{
    @Override
    public void onClick(View v)
    {

    }
});