Android view layout_width - how to change programmatically?

AndroidAndroid Layout

Android Problem Overview


This is my view, and I wish to change layout_width to "10dip". How do I do so programmatically? Note, this is not a LinearLayout, it's a View.

<View 
    android:id="@+id/nutrition_bar_filled" 
    android:background="@drawable/green_rectangle" 
    android:layout_height="30dp"
    android:layout_width="50dp"/>		

I know about LayoutParams. How do I use it to set the width to 10dip?

Android Solutions


Solution 1 - Android

I believe your question is to change only width of view dynamically, whereas above methods will change layout properties completely to new one, so I suggest to getLayoutParams() from view first, then set width on layoutParams, and finally set layoutParams to the view, so following below steps to do the same.

View view = findViewById(R.id.nutrition_bar_filled);
LayoutParams layoutParams = view.getLayoutParams();
layoutParams.width = newWidth;
view.setLayoutParams(layoutParams);

Solution 2 - Android

You can set height and width like this also:

viewinstance.setLayoutParams(new LayoutParams(width, height));

Solution 3 - Android

Or simply:

view.getLayoutParams().width = 400;
view.requestLayout();

Solution 4 - Android

try using

View view_instance = (View)findViewById(R.id.nutrition_bar_filled);
view_instance.setWidth(10);

use Layoutparams to do so where you can set width and height like below.

LayoutParams lp = new LayoutParams(10,LayoutParams.wrap_content);
View_instance.setLayoutParams(lp);

Solution 5 - Android

androidx (core-ktx) contains an extension function to update layout params, for example:

view.updateLayoutParams<ConstraintLayout.LayoutParams> {
    width = ConstraintLayout.LayoutParams.MATCH_PARENT
    // or wrap_content
    width = ConstraintLayout.LayoutParams.WRAP_CONTENT
    // or size measured in pixels
    width = 200 
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHenleyView Question on Stackoverflow
Solution 1 - AndroidjeetView Answer on Stackoverflow
Solution 2 - AndroidShankar AgarwalView Answer on Stackoverflow
Solution 3 - AndroidM. Usman KhanView Answer on Stackoverflow
Solution 4 - AndroidShankar AgarwalView Answer on Stackoverflow
Solution 5 - AndroidVladislavView Answer on Stackoverflow