2017-10-05 78 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

相關問題