android - 在新的 TextView 上使用 setLeft/setRight 方法

标签 android textview android-relativelayout

我正在以编程方式使用 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/

相关文章:

android - 如何更改 React Native Android 项目名称

php - 如何在 Android 设备上为 "Content-Disposition: inline;"文件设置文件名?

Android TextView 使用append() 数百次缓慢 - 解决方案?

android - 以编程方式将 LinearLayout 的项目设置在中心屏幕

android文本未显示在按钮中

android - 如何将 Gradle 支持添加到现有项目?

android - 权限被拒绝从 SD 卡读取

android - TextView 添加渐变和阴影

android - 在 Android 自定义适配器中设置 Textview 文本的问题

java - 调整android Activity 的布局以适应所有屏幕并始终显示所有信息