Fran Fitzpatrick
Fran Fitzpatrick

Reputation: 18512

How to set android:layout_weight and android:layout_width in code?

Can someone please tell me how to set the android:layout_weight and android:layout_width XML attributes in code for dynamically created views?

Reference: XML Table layout? Two EQUAL-width rows filled with equally width buttons?

Upvotes: 10

Views: 19494

Answers (3)

SAAM
SAAM

Reputation: 288

Set the layout params of the dynamically created view as below

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.MATCH_PARENT,
                            LinearLayout.LayoutParams.WRAP_CONTENT,
                            2f
                    );
myView.setLayoutParams(param) 

Here last argument '2f' specifies the layout weight for the view. We can also use decimal points here.

Upvotes: 3

brianestey
brianestey

Reputation: 8302

Try

setLayoutParams(new LayoutParams(width, height))

The docs for the constructor says:

ViewGroup.LayoutParams(int width, int height)

Creates a new set of layout parameters with the specified width and height.

Upvotes: 4

user658042
user658042

Reputation:

Use ViewGroup.LayoutParams.

LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, 
                                   LayoutParams.WRAP_CONTENT);
myview.setLayoutParams(lp);

You can also specify fixed pixel sizes in the constructor, instead of the constants. But fixed pixels are a bad idea on android due to the variety of devices.

You can calculate the pixels from a dp size though, which is ok:

float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 
                                         10, getResources.getDisplayMetrics());

(Here: convert 10dp to a pixel value)

Upvotes: 19

Related Questions