2016-04-06 2 views
0

Я добавляю один и тот же вид программно в gridLayout каждый раз, когда я нажимаю кнопку, я хочу установить маржу для этих добавленных представлений, как мне это сделать? Я попытался layoutParams.setMargin(10,10,10,10) и theLayout.setPadding(10,10,10,10)добавить маржу к программно добавленному представлению

Вот как я добавляю взгляды:

 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 как LinearLayout.LayoutParams, потому что он не принимает GirdLayout.LayoutParams и его похоже, не влияет на него.

Что мне нужно - это способ добавления поля к линейной компоновке, которую я постоянно добавляю с помощью кнопки (theLayout).

+0

Итак, вы пытаетесь добавить маржу к которой? LinearLayout? –

+0

На самом деле, я в замешательстве. У вас есть GridLayout с именем переменной linearLayout. Пожалуйста, укажите, что вы пытаетесь выполнить. –

+0

Хорошо, я отредактировал –

ответ

1

Вместо добавления к GridLayout и повторное использование те же параметры макет каждый раз, как вы сейчас находитесь:

gridLayout.addView(theLayout, layoutParams); 

Вы можете просто принять, что GridLayout назначит новые параметры макета объекта для каждого ребенка (addView создаст это для вас), и вы можете изменить это прямо:

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

Я не могу попробовать прямо сейчас, но похоже, что он будет работать, поэтому я буду с честью принимать ваш ответ :) –

+0

Работает отлично, спасибо! –

Смежные вопросы