在运行时添加Textview时要使用的布局? (机器人)

时间:2011-10-27 14:21:04

标签: android android-layout

我在运行时添加了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 个答案:

答案 0 :(得分:2)

您没有使用params,我相信您打算使用

tt.setLayoutParams(params);

而不是

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

但是这种方式TextView会相互重叠,因此您可能还希望.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设置了ID(如解释here,RelativeLayout仅解析每个孩子的ID),因此下一个将低于之前。第一个与父母的顶部对齐。我没有测试过,但至少它是起点。

答案 1 :(得分:0)

如果您知道xml文件中有多少个小部件,那么使用 LinearLayou ** t与** vertical_orientaion 你可以在任何指定的位置添加它:

ll.addView(tt,your_position);

希望这会有所帮助。 :)