RelativeLayout将多个视图添加到另一个

时间:2016-11-02 15:32:49

标签: android android-layout view

我想制作添加按钮,将视图添加到另一个下面。我不想要Listview。我在每个视图上尝试了设置ID,然后使用setID添加,但是当我点击按钮时,视图会在同一位置创建。

    final Button addView = (Button)findViewById(R.id.addView);
    mainLayout = (RelativeLayout)findViewById(R.id.activity_mainID);
    final RelativeLayout rv = new RelativeLayout(MainActivity.this);
    rv.setId(-1);
    TextView tx = new TextView(this);
    rv.setBackgroundColor(ContextCompat.getColor(this,R.color.colorAccent));
    rv.addView(tx);
    mainLayout.addView(rv,100,100);

    addView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RelativeLayout view = new RelativeLayout(MainActivity.this);
            RelativeLayout.LayoutParams  params1 = new RelativeLayout.LayoutParams(200,200);
            view.setId(id);
            TextView tv = new TextView(MainActivity.this);
            tv.setText("TEXT"+id);
            view.addView(tv);
            view.setBackgroundColor(ContextCompat.getColor(MainActivity.this,R.color.colorPrimary));
            params1.addRule(RelativeLayout.BELOW, id--);
            mainLayout.addView(view,params1);
            id=id+2;
        }
    });

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:weightSum="10"
    android:id="@+id/activity_mainID"
    >
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/addView"
    android:text="ADD"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"/>

    </RelativeLayout>

编辑:我使用LinearLayout解决了我的问题,但仍然不知道我的第一个解决方案中有什么不正确。如果有人发现它,请与我分享。

1 个答案:

答案 0 :(得分:0)

当我的初始id为-1,0或1时,我试图做同样的事情并遇到奇怪的问题。将它设置为更高的初始数字(我将其设置为4)并且突然一切都按预期工作。我想原因是这些值代表<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output indent="yes" method="html"/> <xsl:template match="/*"> <html> <body> <table border="1"> <xsl:apply-templates/> </table> </body> </html> </xsl:template> <xsl:template match="item"> <tr> <td><xsl:value-of select="@name"/></td> <td> <xsl:apply-templates/> </td> </tr> </xsl:template> <xsl:template match="run"> <xsl:value-of select="." separator=""/> </xsl:template> <xsl:template match="popuptext" /> </xsl:stylesheet> 类中的常量。