Android RelativeLayout将多个视图一个一个地添加到另一个视图下面
我想制作一个添加按钮,将视图一个一个地添加到另一个视图下面。我不想要列表视图。我尝试在每个视图上设置id,然后使用setID添加,但当我单击按钮时,视图会在同一位置创建Android RelativeLayout将多个视图一个一个地添加到另一个视图下面,android,android-layout,view,Android,Android Layout,View,我想制作一个添加按钮,将视图一个一个地添加到另一个视图下面。我不想要列表视图。我尝试在每个视图上设置id,然后使用setID添加,但当我单击按钮时,视图会在同一位置创建 final Button addView = (Button)findViewById(R.id.addView); mainLayout = (RelativeLayout)findViewById(R.id.activity_mainID); final RelativeLayout rv = new
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
编辑:我使用LinearLayout解决了我的问题,但仍然不知道我的第一个解决方案中有什么不正确。如果有人发现了,请与我分享。当我的初始id为-1、0或1时,我也尝试过这样做,但遇到了一些奇怪的问题。将其设置为一个更高的初始值(我将其设置为4),突然间一切都按预期进行。我想原因是这些值代表了
视图组类中的常量。当我的初始id为-1、0或1时,我也尝试过这样做,但遇到了一些奇怪的问题。将其设置为一个更高的初始值(我将其设置为4),突然间一切都按预期进行。我猜原因是这些值代表了视图组
类中的常量。为什么不使用linearLayout?因为我希望它是可点击的,并且我想如果setId可用,那么你可以使用setTag和getTag为什么不使用linearLayout?因为我希望它是可点击的,并且我想如果setId可用,那么你可以使用setTag和getTag
<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>