какой макет использовать при добавлении Textview во время выполнения?(Андроид) - PullRequest
1 голос
/ 27 октября 2011

Я добавляю textview во время выполнения и хочу, чтобы textview добавлялся в последнюю или в следующую строку, если он не помещается в последнюю строку. Я пытаюсь использовать RelativeLayout. Я пытаюсь указать параметры, такие как ALIGN_PARENT_LEFT, но это не работает. Итак, я хотел бы спросить, какой макет я должен использовать?

RelativeLayout ll = (RelativeLayout) findViewById(R.id.categorylayout);
    //  ll.setGravity(Gravity.LEFT );
        RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) ll.getLayoutParams();
        params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);  
        for(int i =0 ; i<tags.size();i++){
            TextView tt = new TextView(this);
            tt.setText(tags.get(i));
            tt.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            tt.setBackgroundColor(Color.RED);
            ll.addView(tt  );
        }

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

вы не используете params, я полагаю, вы намеревались использовать

tt.setLayoutParams(params);

вместо

tt.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

Однако, таким образом TextView s будут перекрывать друг друга, поэтому вы также можете захотеть .addRule() для вертикального выравнивания внутри вашего цикла.

редактировать

for(int i =0 ; i<tags.size();i++){
    TextView tt = new TextView(this);
    tt.setText(tags.get(i));
    tt.setId(i+1);

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
    if (i == 0)
        params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
    else 
        params.addRule(RelativeLayout.BELOW, i);

    tt.setLayoutParams(params));
    tt.setBackgroundColor(Color.RED);
    ll.addView(tt);
}

краткое объяснение : вы устанавливаете идентификаторы для каждого TextView (как объяснено здесь , RelativeLayout разрешает только идентификаторы для каждого ребенка), и поэтому следующий будет ниже предыдущего. Первый выравнивается по верху родителя. Я не проверял это, но, по крайней мере, это отправная точка.

0 голосов
/ 27 октября 2011

Если вы знаете, сколько виджетов в вашем XML-файле, тогда используйте LinearLayou ** t с ** vertical_orientaion Вы можете добавить его в любую указанную позицию следующим образом:

ll.addView(tt,your_position);

Надеюсь, это поможет. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...