简体   繁体   English

如何以编程方式将app:layout_columnWeight和app:layout_rowWeight设置为GridLayout的子级

[英]how to set app:layout_columnWeight and app:layout_rowWeight to GridLayout's child programmatically

I have a GridLayout in my layout.xml . 我的layout.xml有一个GridLayout。 I want to add ImageView as child to the GridLayout . 我想将ImageView作为子级添加到GridLayout I also need to set some properties to the child. 我还需要为孩子设置一些属性。

Below is the layout.xml which I want to do programmatically: 以下是我要以编程方式执行的layout.xml

<android.support.v7.widget.GridLayout
                    android:id="@+id/gridLayout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_centerInParent="true"
                    app:columnCount="3"
                    app:rowCount="3">

                    <ImageView
                        android:id="@+id/r1c1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:adjustViewBounds="true"
                        android:scaleType="fitXY"
                        android:src="@drawable/a270"
                        app:layout_columnWeight="1"
                        app:layout_gravity="fill_horizontal"
                        app:layout_rowWeight="1" />

                    <ImageView
                        android:id="@+id/r1c2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:adjustViewBounds="true"
                        android:scaleType="fitXY"
                        android:src="@drawable/c0"
                        app:layout_columnWeight="1"
                        app:layout_gravity="fill_horizontal"
                        app:layout_rowWeight="1" />

                    <ImageView
                        android:id="@+id/r1c3"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:adjustViewBounds="true"
                        android:scaleType="fitXY"
                        android:src="@drawable/a0"
                        app:layout_columnWeight="1"
                        app:layout_gravity="fill_horizontal"
                        app:layout_rowWeight="1" />

                    <ImageView
                        android:id="@+id/r2c1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:adjustViewBounds="true"
                        android:scaleType="fitXY"
                        android:src="@drawable/c270"
                        app:layout_columnWeight="1"
                        app:layout_gravity="fill_horizontal"
                        app:layout_rowWeight="1" />

                    <ImageView
                        android:id="@+id/r2c2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:adjustViewBounds="true"
                        android:scaleType="fitXY"
                        android:src="@drawable/e0"
                        app:layout_columnWeight="1"
                        app:layout_gravity="fill_horizontal"
                        app:layout_rowWeight="1" />

                    <ImageView
                        android:id="@+id/r2c3"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:adjustViewBounds="true"
                        android:scaleType="fitXY"
                        android:src="@drawable/c90"
                        app:layout_columnWeight="1"
                        app:layout_gravity="fill_horizontal"
                        app:layout_rowWeight="1" />

                    <ImageView
                        android:id="@+id/r3c1"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:scaleType="fitXY"
                        android:src="@drawable/a180"
                        app:layout_columnWeight="1"
                        app:layout_gravity="fill_horizontal"
                        app:layout_rowWeight="1" />

                    <ImageView
                        android:id="@+id/r3c2"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:scaleType="fitXY"
                        android:src="@drawable/c180"
                        app:layout_columnWeight="1"
                        app:layout_gravity="fill_horizontal"
                        app:layout_rowWeight="1" />

                    <ImageView
                        android:id="@+id/r3c3"
                        android:layout_width="0dp"
                        android:layout_height="0dp"
                        android:scaleType="fitXY"
                        android:src="@drawable/a90"
                        app:layout_columnWeight="1"
                        app:layout_gravity="fill_horizontal"
                        app:layout_rowWeight="1" />
                </android.support.v7.widget.GridLayout>

I tried this programmatically. 我以编程方式尝试过。 But problem is I am not able to set app:layout_columnWeight and app:layout_rowWeight programmatically. 但是问题是我无法以编程方式设置app:layout_columnWeightapp:layout_rowWeight

Problem is, how to set app:<property-name> programmatically? 问题是,如何以编程方式设置app:<property-name>

You can generate imageview dynamically and assign it to your grid layout like this .. 您可以动态生成imageview,并将其分配给网格布局,如下所示:..

    ImageView imageView = new ImageView(MainActivity.this);
    int width = 200;
    int height = 150;
    RelativeLayout relt = new RelativeLayout(MainActivity.this);
    RelativeLayout.LayoutParams parms = new RelativeLayout.LayoutParams(width, height);
    RelativeLayout.LayoutParams parms_play = new RelativeLayout.LayoutParams(100, 70);
    imageView.requestLayout();
    imageView.setId(i);
    imageView.setPadding(4, 4, 4, 4);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    relt.addView(imageView);
    gridLayout.addView(relt);

for gridlayout spec , go for 对于gridlayout规范,请

GridLayout gl = (GridLayout) findViewById(R.id.grid_layout);
    gl.setColumnCount(8);
    gl.setRowCount(8);

    for(int i=0; i<gl.getRowCount(); i++)
    {
        GridLayout.Spec rowSpec = GridLayout.spec(i, 1, GridLayout.FILL);

        for(int j=0;j<gl.getColumnCount();j++)
        {
            GridLayout.Spec colSpec = GridLayout.spec(j,1, GridLayout.FILL);

            TextView tvChild = new TextView(this);
            tvChild.setText("[ " + i + " | " + j + " ]");
            tvChild.setTextSize(18f);
            tvChild.setTextColor(Color.WHITE);
            tvChild.setGravity(Gravity.CENTER);

            GridLayout.LayoutParams myGLP = new GridLayout.LayoutParams();
            myGLP.rowSpec = rowSpec;
            myGLP.columnSpec = colSpec;

            gl.addView(tvChild, myGLP );
        }
    }

For more information check this 有关更多信息,请检查此

GridLayout Specs GridLayout规格

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何以编程方式添加GridLayout子项的layout_columnWeight? - How to set layout_columnWeight for a GridLayout child when added programmatically? 如何在 API 21 之前支持 `layout_columnWeight` 和 `layout_rowWeight`? - How to support `layout_columnWeight` and `layout_rowWeight` in pre API 21? 如何从代码中设置“ app:layout_columnWeight”? - how set “app:layout_columnWeight” from code? 如何以编程方式将 android:layout_columnWeight="1" 设置为 android 支持 v7 Gridlayout 中的元素 - How do I set android:layout_columnWeight="1" programmatically to an element in an android support v7 Gridlayout 如何在样式中使用支持 layout_columnWeight? - How to use support layout_columnWeight in a style? 在 Gridlayout 中的 MaterialCardView 中找不到属性 layout_columnWeight - Attribute layout_columnWeight not found in MaterialCardView inside Gridlayout 在包“android”中找不到属性“layout_columnWeight”的资源标识符 - No resource identifier found for attribute 'layout_columnWeight' in package 'android' 如何以编程方式设置cardView的columnWeight - How to set columnWeight of cardView programmatically 以编程方式在 GridLayout 中设置 layout_column 和 layout_row - Set layout_column and layout_row in GridLayout programmatically 如何以编程方式为工具栏设置 app:layout_scrollFlags - How to set app:layout_scrollFlags for Toolbar programmatically
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM