Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Alignment not right when adding view dynamically to GridLayout

When added buttons by XML - All good

When adding buttons through XML

  <GridLayout
    android:id="@+id/social_gl_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:alignmentMode="alignBounds"
    android:columnCount="2"
    android:padding="8dp">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="45dp"
        android:layout_columnWeight="1">
        <Button
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:background="@android:color/holo_blue_light"
            android:text="Hi"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="45dp"
        android:layout_columnWeight="1">
        <Button
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:background="@android:color/holo_green_light"
            android:text="Whatsapp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="45dp"
        android:layout_columnWeight="1">
        <Button
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:background="@android:color/holo_green_light"
            android:text="This is facebook"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="45dp"
        android:layout_columnWeight="1">
        <Button
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:background="@android:color/holo_blue_light"
            android:text="On"
            />
    </LinearLayout>

</GridLayout>

When added Buttons dynamically(By code)- Alignment missing, buttons not occupying complete width of a column

GridLayout gl = (GridLayout) findViewById(R.id.social_gl_content);
    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    for (int i = 0 ; i < strs.length ; i++) {
        View v = inflater.inflate(R.layout.grid_item, null);
        Button b = (Button) v.findViewById(R.id.button);
        b.setText(strs[i]);
        if ( i % 2 ==0) {
            b.setBackgroundColor(Color.BLACK);
        }else{
            b.setBackgroundColor(Color.BLUE);
        }
        gl.addView(v);
    }

enter image description here

like image 366
Vipul J Avatar asked Nov 20 '15 07:11

Vipul J


1 Answers

Instead of passing null:

View v = inflater.inflate(R.layout.grid_item, null);

pass the parentView so that v has the correct layout params.

View v = inflater.inflate(R.layout.grid_item, gl, false);

like image 81
Charles Durham Avatar answered Sep 25 '22 13:09

Charles Durham