Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android : How to programmatically set layout_constraintRight_toRightOf "parent"

I have a view in ConstrainLayout as follows.

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxWidth="260dp"
        android:textColor="#FFF"
        android:textSize="16sp"
        app:layout_constraintLeft_toLeftOf="@+id/parent"
        app:layout_constraintTop_toBottomOf="@id/message_date"
        android:id="@+id/text_main"
        />

I would like to change the view to either app:layout_constraintLeft_toLeftOf="@+id/parent" or layout_constraintLeft_toRightOf="@+id/parent" programmatically in recycleViewHolder based on some conditions.

like image 780
Relm Avatar asked Jan 16 '17 06:01

Relm


2 Answers

Here is an example of setting a button to the bottom of parent view using java code:

ConstraintLayout constraintLayout; ConstraintSet constraintSet;  @Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);     constraintLayout = (ConstraintLayout) findViewById(R.id.activity_main_constraint_layout);      Button button = new Button(this);     button.setText("Hello");     constraintLayout.addView(button);      constraintSet = new ConstraintSet();     constraintSet.clone(constraintLayout);      constraintSet.connect(button.getId(), ConstraintSet.LEFT, constraintLayout.getId(), ConstraintSet.RIGHT, 0);     constraintSet.constrainDefaultHeight(button.getId(), 200);     constraintSet.applyTo(constraintLayout);  } 

to achieve something like this,

app:layout_constraintLeft_toLeftOf="@+id/parent"  

your java code should look like this

set.connect(YOURVIEW.getId(),ConstraintSet.LEFT,ConstraintSet.PARENT_ID,ConstraintSet.LEFT,0); 

and to achieve something like this,

layout_constraintLeft_toRightOf="@+id/parent" 

your java code should look like this,

set.connect(YOURVIEW.getId(),ConstraintSet.LEFT,ConstraintSet.PARENT_ID,ConstraintSet.RIGHT,0); 

Here, I'm assuming android:id="@+id/parent" is the id of your parent ConstraintLayout .

like image 198
Darshan Soni Avatar answered Sep 23 '22 18:09

Darshan Soni


constraintSet = new ConstraintSet(); and so on

Did not work for me anyhow.

Solved by

  LayoutParams layoutParams = (LayoutParams) viewToChange.getLayoutParams();
    layoutParams.leftToLeft = anotherViewId;
    layoutParams.rightToRight =anotherViewId;
    layoutParams.topToTop = anotherViewId;
    layoutParams.bottomToBottom = anotherViewId;
    layoutParams.startToStart =anotherViewId;
    layoutParams.endToEnd = anotherViewId;
    viewToChange.setLayoutParams(layoutParams);
like image 33
Holiday Fun Avatar answered Sep 21 '22 18:09

Holiday Fun