簡體   English   中英

如何以編程方式將app:layout_columnWeight和app:layout_rowWeight設置為GridLayout的子級

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

我的layout.xml有一個GridLayout。 我想將ImageView作為子級添加到GridLayout 我還需要為孩子設置一些屬性。

以下是我要以編程方式執行的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>

我以編程方式嘗試過。 但是問題是我無法以編程方式設置app:layout_columnWeightapp:layout_rowWeight

問題是,如何以編程方式設置app:<property-name>

您可以動態生成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);

對於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 );
        }
    }

有關更多信息,請檢查此

GridLayout規格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM