我正在以编程方式使用 TextViews,我需要动态添加新 View 并在 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);
基本上,我在某个位置(称为 View )有一个 TextView ,我正在尝试在现有 TextView 上方和相同的左侧位置创建一个新 TextView 。 虽然 getLeft() 方法正确返回 View 的左侧位置,但 childView 恰好将左侧字段设置为零,并在我将其添加到 RelativeLayout 时出现在屏幕的左端。 看起来它完全忽略了 setLeft 方法! 谁能解释为什么? 非常感谢您!
最佳答案
public final void setLeft (int left)
在 API 级别 11 中添加 设置此 View 相对于其父 View 的左侧位置。此方法旨在由布局系统调用,通常不应以其他方式调用,因为该属性可能随时被布局更改。
参数 left 此 View 的底部,以像素为单位。
很可能每次绘制左侧值时,布局都会设置左侧值,并覆盖您在 View 中设置的值。
android 布局非常像 XML,即使以编程方式进行也是如此。
尝试使用
lp.setMargins(int left, int top, int right, int bottom);
..或其他一些在绘制布局时不会撤消的方法
关于android - 在新的 TextView 上使用 setLeft/setRight 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26387479/