2017-10-05 79 views
0

我在我的layout.xml中有一个GridLayout。我想添加ImageView作为孩子到GridLayout。我还需要为孩子设置一些属性。如何以编程方式设置app:layout_columnWeight和app:layout_rowWeight到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>

+0

你能否详细说明你的问题。你究竟在做什么? –

+0

我想将'ImageViews'作为'GridLayout'的子程序的编程方式 – XoXo

回答

1

可以动态地生成的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 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 Specs

+0

我想使'ImageView'' Height'和'Width' 0dp并使用'app:layout_rowWeight'和'app:layout_columnWeight'。 – XoXo

+0

我编辑了我的答案。核实。一个附加链接详细解释 –

+0

我试过了,但没有成功。 ImageView缩放父级的完整高度和宽度。我仍然困惑如何以编程方式设置'app:layout_columnWeight'。 – XoXo

相关问题