0

I tried adding views to RelativeLayout holder with assigning left margin to layout params.

The views got added but margin was not given while adding, resulting in overlapping views .

My Java method to dynamically add Card (child view):

public void addCard(LinearLayout card)
{
    LayoutParams params = new LayoutParams(card.getLayoutParams());
    params.leftMargin = (this.mainHolder.getChildCount() * ((int) pxToDp(this.mContext.getResources().getDimension(R.dimen.card_margin)))) + 10;

    this.mainHolder.addView(card, params);
    this.mainHolder.setGravity(RelativeLayout.END_OF);
    card.setOnTouchListener(new MyTouchListener());
}

Main holder layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clipChildren="false"
    android:padding="4dp" />

Desired output

  • you can use linear layout instead of relative layout else you will have to set tag to every card(linearlayout) to assign layout below in new card(linearlayout). – Arti Patel Sep 15 '17 at 07:34
  • param.leftMargin values are increased with every new child, like 10, 80, 150...so on. Not using LinearLayout because I want overlapping cards like playing cards placed in a line ... – Nikhil Sharma Sep 15 '17 at 07:42
  • Hi @pskink, I tried using MarginLayoutParams, But it's showing the same result with views on top of each other. However, it works fine with API 24 and above. – Nikhil Sharma Sep 15 '17 at 08:46

0 Answers0