动态地向RelativeLayout添加内容

时间:2010-11-24 17:27:26

标签: android relativelayout

由于我还在学习Android(看起来亚马逊表示,在我获得Hello,Android书籍之前还需要2个月),我仍然在做着简单的事情。使用ImageView点击RelativeLayout上的按钮,即可显示图标。创建它的代码如下:

private int mIconIdCounter = 1;
private ImageView addIcon(){
    ImageView item = new ImageView(this);
    item.setImageResource( R.drawable.tiles );
    item.setAdjustViewBounds(true);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT );
    if( mIconIdCounter != 1 ){
        params.addRule(RelativeLayout.RIGHT_OF, 1 );
    }
    item.setLayoutParams( params );
    item.setId( mIconIdCounter );
    ++m_IconIdCounter;
    return item;
}

,添加项目的代码是:

Button addButton = (Button)findViewById(R.id.add_new);
addButton.setOnClickListener( new OnClickListener(){
    @Override
    public void onClick(View view) {
        addContentView( addIcon(), new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) );
    }
});

当我点击我的按钮时,所有新创建的视图都会相互叠加。我希望它们被放置在下一个元素的右侧。我在SO上快速搜索了与RelativeLayout相关的文章,发现了一些相似的文章(herehereherehere)但是内容进入RelativeView他们似乎没有解决定位问题。

我做错了什么?

编辑:

我的主要xml看起来像:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button
        android:id="@+id/add_new"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/add_new"
        android:layout_alignParentBottom="true" />
</RelativeLayout>

2 个答案:

答案 0 :(得分:8)

看起来您可能会将视图添加到布局xml的根目录而不是RelativeLayout。

你可以尝试:

RelativeLayout layout = (RelativeLayout)findViewById(R.id.my_layout);
layout.addView(addIcon());

答案 1 :(得分:0)

您正在函数调用中创建新的相对布局。因此,每次创建新的相对布局并在单击按钮时添加到视图中。使用常见的相对布局。