我在运行时添加了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 );
}
答案 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);
希望这会有所帮助。 :)