我需要彼此相邻地动态创建多个TextView。当我运行下面的代码时,结果不是我的预期。 t1和t2与另一个相距很远
RelativeLayout journals = (RelativeLayout) findViewById(R.id.main);
layoutUserDoes = new LinearLayout(this);
layoutUserDoes.setLayoutParams(new LayoutParams(journals.getWidth() , 100));
layoutUserDoes.setY(0);
layoutUserDoes.setBackgroundColor(Color.WHITE);
journals.addView(layoutUserDoes);
TextView t1=new TextView(this);
t1.setTextSize(20);
t1.setText("t1");
t1.setBackgroundColor(Color.GRAY);
t1.setTextColor(Color.BLACK);
t1.setWidth(50);
t1.setHeight(40);
t1.setX(20);
layoutUserDoes.addView(t1);
TextView t2=new TextView(this);
t2.setTextSize(20);
t2.setText("t2");
t2.setBackgroundColor(Color.GRAY);
t2.setTextColor(Color.BLACK);
t2.setWidth(50);
t2.setHeight(40);
t2.setX(70);
layoutUserDoes.addView(t2);
答案 0 :(得分:1)
因为您正在使用:
t2.setX(70);
答案 1 :(得分:1)
您将这两个View
放入LinearLayout
,这样就无需使用setX()
方法,因为此布局会自动安排其子项。
所以你现在有两种可能来解决这个问题:
t2.setX(70)
方法调用OR
View
添加到RelativeLayout
。 RelativeLayout
不会自行安排子项,因此再次需要setX()
方法。答案 2 :(得分:0)
尽量不要使用t1.setX(20);
和t2.setX(70);
视图的位置应该通过它的父级来决定
答案 3 :(得分:0)
除了使用setX
之外,最好使用RelativeLayout
的对齐属性,因为您将RelativeLayout作为父布局。跳过中间的LinearLayout或将其更改为RelativeLayout。
试试这个:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.RIGHT_OF, textView1Id);
textView2Id.setLayoutParams(params);
因此,TextView 2将与TextView 1的右侧对齐。
希望这有帮助。