我正在以编程方式使用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方法!
有谁能解释为什么?
非常感谢你提前!
解决方法:
public final void setLeft(int left)
在API级别11中添加
设置此视图相对于其父级的左侧位置.此方法旨在由布局系统调用,通常不应以其他方式调用,因为该属性可能随时由布局更改.
参数
left此视图的底部,以像素为单位.
每次绘制时,布局最有可能设置左值,并覆盖您在视图上设置的值.
即使以编程方式进行操作,android布局也非常简单.
尝试使用
lp.setMargins(int left, int top, int right, int bottom);
..或绘制布局时不会撤消的其他方法
标签:android,textview,relativelayout
来源: https://codeday.me/bug/20190609/1207117.html
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态