我正在以编程方式使用TextViews,我需要动态添加新视图并在RelativeLayout父级中设置它们的左/顶位置。 我正在做的是这样的事情:
RelativeLayout global=(RelativeLayout)findViewById(R.id.global);
TextView view=(TextView)findViewById(R.id.root);
RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
final TextView childView=new TextView(view.getContext());
lp.addRule(RelativeLayout.ABOVE, view.getId());
childView.setLayoutParams(lp);
childView.setId(childView.getId()+1);
childView.setText("TRY STRING");
childView.setTextSize(view.getTextSize());
childView.setWidth(view.getWidth());
childView.setLeft(view.getLeft()+interval);
global.addView(childView);
基本上,我在某个位置(称为视图)有一个textview,我正在尝试在现有的位置和相同的左侧位置上创建一个新的textview。 虽然getLeft()方法正确返回视图的左侧位置,但是当将我将其添加到RelativeLayout时,childView恰好将左侧字段设置为零,并显示在屏幕的左端。 看起来它完全忽略了setLeft方法! 有谁能解释为什么? 非常感谢你提前!
答案 0 :(得分:5)
public final void setLeft(int left)
在API级别11中添加 设置此视图相对于其父级的左侧位置。此方法应由布局系统调用,通常不应调用,因为布局可随时更改属性。
参数 left此视图的底部,以像素为单位。
每次绘制时,布局最有可能设置左值,并覆盖您在视图上设置的值。
即使以编程方式进行操作,Android布局也非常简单。尝试使用
lp.setMargins(int left, int top, int right, int bottom);
..或在绘制布局时不会撤消的其他方法