2016-08-16 3 views
3

Я хочу, чтобы разобрать текст, а также создавать для каждого слова - кнопки, но я не знаю, как организовать их один за другимСоздание кнопок в последовательном порядке программным

String s = "Alice was beginning to get very tired of sitting"; 
String[] q = s.split(" "); 
for (int i = 0; i < q.length; i++) { 
    Button myButton = new Button(this); 
    myButton.setText(q[i]); 

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout1); 
    layout.addView(myButton, params); 

} 

img

+2

Предлагаю вам попробовать «TableLayout». Динамическое создание RelativeLayout, как это будет сложно –

+0

I второй комментарий cricket_007. Было бы слишком трудно заполнить релятивизацию, подобную этой, используя цикл for. –

+0

addrules, но не может быть с циклом –

ответ

2

See эта пользовательская библиотека: FlowLayout

Пока вы добавляете виды внутри FlowLayout, он автоматически обертывается, когда нет места для следующего элемента.

2

В вашем подходе нет ничего плохого, это только то, что relative layout, поскольку имя предполагает, что дочерние представления имеют некоторые параметры для выравнивания представлений относительно них, например. выше, ниже и т. д. В результате вы получаете представления, перекрывающиеся друг с другом, и, следовательно, только верхний вид добавляется сверху.

Используйте FlowLayout, и все будет хорошо.

0

Вам нужно определить RelativeLayout параметров, как в примере ниже

Вот пример, чтобы вы начали, заполнить остальные, как это применимо:

TextView tv = new TextView(mContext); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
params.leftMargin = 107 
... 
mRelativeLayout.addView(tv, params); 

Документов для RelativeLayout.LayoutParams и тому конструкторы here

От: How to add a view programmattically to RelativeLayout?

Проверьте приведенную ниже ссылку, чтобы получить более подробную информацию.

Надеется, что это поможет

0

В следующем коде, вы должны изменить верхние пределы для того, чтобы переменные.

public class MainActivity 
     extends Activity 
     implements View.OnClickListener { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      TableLayout layout = new TableLayout (this); 
      layout.setLayoutParams(new TableLayout.LayoutParams(4,5)); 

      layout.setPadding(1,1,1,1); 

      for (int f=0; f<=13; f++) { 
       TableRow tr = new TableRow(this); 
       for (int c=0; c<=9; c++) { 
        Button b = new Button (this); 
        b.setText(""+f+c); 
        b.setTextSize(10.0f); 
        b.setTextColor(Color.rgb(100, 200, 200)); 
        b.setOnClickListener(this); 
        tr.addView(b, 30,30); 
       } // for 
       layout.addView(tr); 
      } // for 

      super.setContentView(layout); 
     } //() 

     public void onClick(View view) { 
      ((Button) view).setText("*"); 
      ((Button) view).setEnabled(false); 
     } 
    } // class 
Смежные вопросы