2017-07-06 1 views
-7

[画像1]アンドロイドで動的グリッドレイアウトをプログラムでのみ追加する方法は?

https://i.stack.imgur.com/bZOnn.png

私はXMLコードを使用していない、唯一のJavaコードを使用して、私のAndroidアプリで動的にレイアウトを追加します。親切に私にこれを手伝ってください。進んでいただきありがとうございます。私はこれを行っていたこのコードを使用して

+0

は、あなたがより具体的にすることはできますか?これまでに何を達成しましたか? – Cochi

+0

リサイクラビューを使用し、recyclerViewのStaggeredGridLayoutManagerを使用して目的の効果を達成することができます。詳細はリンクを参照してください: https://inducesmile.com/android/android-staggeredgridlayoutmanager-example-tutorial/ – sumit

答えて

0

ます。public void makeSeat()

{

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
    params.setMargins(3,3,3,3); 

    GridLayout gl = (GridLayout) findViewById(R.id.grid_main); 

    int column = 4; 
    int row = 5; 
    int i_total = 4*5; 
    int i_busSeatNo = 1; 

    gl.setAlignmentMode(GridLayout.ALIGN_BOUNDS); 
    gl.setColumnCount(column); 
    gl.setRowCount(row + 1); 

    CheckBox btn; 

    for(int i =0, c = 0, r = 1; i < i_total; i++, c++) 
    { 
     if(c == column) 
     { 
      c = 0; 
      r++; 
      i_busSeatNo++; 
     } 

     if (r == c+1){ 
      i_busSeatNo = r; 
     } 
     btn = new CheckBox(this); 
     btn.setGravity(Gravity.CENTER); 
     btn.setBackgroundResource(R.drawable.chbox); 
     btn.setButtonDrawable(R.drawable.chbox); 
     btn.setHeight(val_seat); 
     btn.setWidth(val_seat); 
     btn.setText(""+i_busSeatNo); //(r+" "+c); //r+" "+c 
     int cnt = Integer.parseInt(r+""+c); 
     btn.setId(cnt); 
     final CheckBox finalBtn = btn; 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(DynamicBus.this, 
         "id: " + finalBtn.getId() + "\nNo: " + finalBtn.getText(), 
         Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     if(c != column-1) { 
      i_busSeatNo = i_busSeatNo+5; 
     } 

     gl.addView(btn, i); 

     GridLayout.LayoutParams param =new GridLayout.LayoutParams(); 
     param.height = val_seat; 
     param.width = val_seat; 
     param.rightMargin = 7; 
     param.topMargin = 7; 
     param.setGravity(Gravity.CENTER); 
     param.columnSpec = GridLayout.spec(c); 

     if (r==1) 
     param.rowSpec = GridLayout.spec(r,1); 
     btn.setLayoutParams (param); 
    } 

} 

出力:

私は何を得る:

https://i.stack.imgur.com/FqynC.png

私が欲しいもの:

https://i.stack.imgur.com/QZCTI.png

関連する問題