android Layout weight programmatically

Viewed 51124

i have hard-coded the layout_weight on layout xml.but now i want to give the layout_weight and weightSum from java code.

How we do that from our class?

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="25" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="5"
        android:background="#F51215"
        android:paddingLeft="5dip"
        android:text="5" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="20"
        android:background="#1AC92B"
        android:paddingLeft="5dip"
        android:text="20" />
</LinearLayout>
6 Answers

I like Ajii's answer or:

((LinearLayout)view).setWeightSum(n);

and for individual view weight:

((LinearLayout.LayoutParams)view.getLayoutParams()).weight = n;
  • of course you can do.. LinearLayout view = findViewById(R.id.view_name);
    (and drop the dynamic casting (LinearLayout))

  • or substitute...……….. findViewById(R.id.view_name) for view above.

These both worked for me. And if you want value in dimens file:

<item name="new_weight" format="float" type="dimen">(your number)</item>

and: float n = getResources().getFloat(R.dimen.new_weight);

I'm sure you already know most of this but... I was a newbie once and I always appreciated the extra descriptions.

Related