So i've been trying to set a constraint layout programmatically.
Original layout is this
The layout file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="10dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3">
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.48"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card1_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/up_arrow">
<TextView
android:id="@+id/card1_company"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyName"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card1_point"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyPoint"
android:textColor="@color/black"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/card1_company"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card1_des"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="SOME COMPANY DESCRIPTION"
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_default="wrap"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.48"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card2_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/up_arrow">
<TextView
android:id="@+id/card2_company"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyName"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card2_point"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyPoint"
android:textColor="@color/black"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/card2_company"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card2_des"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="SOME COMPANY DESCRIPTION"
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_default="wrap"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.01"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3">
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.48"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card3_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/down_arrow">
<TextView
android:id="@+id/card3_company"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyName"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card3_point"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyPoint"
android:textColor="@color/black"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/card3_company"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card3_des"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="SOME COMPANY DESCRIPTION"
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHeight_default="wrap"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.48"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card4_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/down_arrow">
<TextView
android:id="@+id/card4_company"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyName"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card4_point"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyPoint"
android:textColor="@color/black"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/card4_company"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card4_des"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="SOME COMPANY DESCRIPTION"
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHeight_default="wrap"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.01"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.3">
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.48"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card5_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/up_arrow">
<TextView
android:id="@+id/card5_company"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyName"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card5_point"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyPoint"
android:textColor="@color/black"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/card5_company"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card5_des"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="SOME COMPANY DESCRIPTION"
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_default="wrap"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.48"
app:cardCornerRadius="20dp"
app:cardElevation="10dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card6_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/down_arrow">
<TextView
android:id="@+id/card6_company"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyName"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card6_point"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="CompanyPoint"
android:textColor="@color/black"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/card6_company"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
<TextView
android:id="@+id/card6_des"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
android:text="SOME COMPANY DESCRIPTION"
android:textColor="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHeight_default="wrap"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.5" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
So depending upon the company point, the layout is set. If the points are in negative, the company name and points text are set to the end of the parent and description to the start, as shown in picture, and if the points are positive, vice versa.
But when i set it programmatically, the text is set weirdly for some of the layout where the changes are made, for eg look at the next picture which is set programmatically
If the layout is changed then some text has idented their position closer to center E.g Notice the difference in identation in second pic, vertically second layout and third layout. Third layout didnt have to be changed so its position was same as the 1st pic which is not set programmatically. However the second layout is idented because it was changed programatically
Code to set layout programmatically
if(arrayList.get(0).getPoints() < 0){
constraintLayout1.setBackgroundResource(R.drawable.down_arrow);
company1Name.setGravity(Gravity.END);
company1point.setGravity(Gravity.END);
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) company1Name.getLayoutParams();
params.endToEnd = ConstraintLayout.LayoutParams.PARENT_ID;
params = (ConstraintLayout.LayoutParams) company1point.getLayoutParams();
params.endToEnd = ConstraintLayout.LayoutParams.PARENT_ID;
params = (ConstraintLayout.LayoutParams) company1desc.getLayoutParams();
params.startToStart = ConstraintLayout.LayoutParams.PARENT_ID;
}else{
constraintLayout1.setBackgroundResource(R.drawable.up_arrow);
company1desc.setGravity(Gravity.END);
ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) company1Name.getLayoutParams();
params.startToStart = ConstraintLayout.LayoutParams.PARENT_ID;
params = (ConstraintLayout.LayoutParams) company1point.getLayoutParams();
params.startToStart = ConstraintLayout.LayoutParams.PARENT_ID;
params = (ConstraintLayout.LayoutParams) company1desc.getLayoutParams();
params.endToEnd = ConstraintLayout.LayoutParams.PARENT_ID;
}
How to solve this issue?