2016-04-06 28 views
0

ボタンをクリックするたびに、同じビューをプログラムでgridLayoutに追加しています。追加したビューにマージンを設定したいのですが、どうすればいいですか?それはGirdLayout.LayoutParamsし、それを受け入れていないので、私はLinearLayout.LayoutParamsとしてLayoutParamsを設定します。プログラムで追加されたビューにマージンを追加する

 gridLayout= (GridLayout)findViewById(R.id.gamehistory); 
     Button b = (Button)findViewById(R.id.Button01); 
     layoutParams = new LinearLayout.LayoutParams 
       (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 

     b.setOnClickListener(new View.OnClickListener(){ 
      public void onClick(View v) { 

       Button theButton = new Button(MainActivity.this); 
       TextView theText = new TextView(MainActivity.this); 
       theText.setGravity(Gravity.CENTER_HORIZONTAL); 

       LinearLayout theLayout = new LinearLayout(MainActivity.this); 
       theLayout.setOrientation(LinearLayout.VERTICAL); 
       theLayout.setBackgroundColor(Color.parseColor("#8BAAC3")); 
       theLayout.setId(++i); 
       theText.setText(theLayout.getId() + ""); 
       theLayout.addView(theButton); 
       theLayout.addView(theText); 
       gridLayout.addView(theLayout, layoutParams); 
      } 
     }); 

EDIT: 私が試したlayoutParams.setMargin(10,10,10,10)ここでtheLayout.setPadding(10,10,10,10)

は、私はビューを追加している方法ですそれには影響していないようです。

私が必要とするのは、ボタン(theLayout)で継続的に追加している線形レイアウトに余白を追加する方法です。

+0

あなたはビューに余白を追加しようとしていますか? LinearLayout? –

+0

実際、私は混乱しています。変数名がlinearLayoutのGridLayoutがあります。あなたが達成しようとしていることについて具体的にしてください。 –

+0

さて、私は編集しました –

答えて

1

代わりに毎回のGridLayoutに追加すると、同じレイアウトパラメータを再利用あなたは今のように:

gridLayout.addView(theLayout, layoutParams); 

あなたは単にGridLayoutには、新しいレイアウトパラメータは、それぞれの子に反対割り当てることを受け入れることができます(addViewが作成されます。それはあなたのために)、あなたは直接代わりにそれを変更することができます:

gridLayout.addView(theLayout); 
GridLayout.LayoutParams lp = (GridLayout.LayoutParams) theLayout.getLayoutParams(); 
lp.setMargins(...) 
+0

今すぐ試すことはできませんが、うまくいくように見えますので、私はあなたの答えを納得して受け入れます:) –

+0

完璧に、ありがとう! –

関連する問題