如何以编程方式在RelativeLayout中布局视图?

2024-02-11

我试图以编程方式(而不是通过 XML 声明方式)实现以下目标:

<RelativeLayout...>
   <TextView ...
      android:id="@+id/label1" />
   <TextView ...
      android:id="@+id/label2"
      android:layout_below: "@id/label1" />
</RelativeLayout>

换句话说,我如何制作第二个TextView出现在第一个下方,但我想用代码来完成:

RelativeLayout layout = new RelativeLayout(this);
TextView label1 = new TextView(this);
TextView label2 = new TextView(this);
...
layout.addView(label1);
layout.addView(label2);
setContentView(layout);

Update:

谢谢,英国树。我明白了大体方向,但它仍然不起作用 - “B”与“A”重叠。我究竟做错了什么?

RelativeLayout layout = new RelativeLayout(this);
TextView tv1 = new TextView(this);
tv1.setText("A");

TextView tv2 = new TextView(this);
tv2.setText("B");
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.FILL_PARENT);
lp.addRule(RelativeLayout.RIGHT_OF, tv1.getId());

layout.addView(tv1);        
layout.addView(tv2, lp);

根据我的了解,您必须使用 LayoutParams 添加视图。

LinearLayout linearLayout = new LinearLayout(this);

RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(
        LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
relativeParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);

parentView.addView(linearLayout, relativeParams);

所有功劳都归功于 sechastain,要以编程方式相对定位您的项目,您必须为它们分配 id。

TextView tv1 = new TextView(this);
tv1.setId(1);
TextView tv2 = new TextView(this);
tv2.setId(2);

Then addRule(RelativeLayout.RIGHT_OF, tv1.getId());

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以编程方式在RelativeLayout中布局视图? 的相关文章

随机推荐

  • 即时应用程序功能模块中的资源合并

    在即时应用程序功能模块中 我导入一个 aar 使用来自 Maven 存储库的 api 语句 其中包含其清单中的活动声明以及此声明中使用的 样式 资源 由于在基本功能项目中找不到样式资源 因此清单合并失败 功能模块中导入的 aar 的资源似乎
  • IE 11 添加类 + 删除类

    我无法让此代码在 Internet Explorer 11 上运行 我知道此段导致了问题 如果我在激活此代码的情况下上传文件 IE 11 会将我网站的整个部分完全显示为空白 没有它 它会在我的网站上显示信息 但它的功能显然不一样 我查过各种
  • select2 动态改变项目

    我有两个链接的选择 第一个选择的每个值决定哪些项目将显示在第二个选择中 第二个选择的值存储在二维数组中 id 1 text a id 2 text b id 1a text aa id 1b text ba 第一个选择值确定用于填充第二个选
  • LDA Mallet 调用进程错误

    我正在尝试实现以下代码 import os os environ update MALLET HOME r c mallet 2 0 8 mallet path C mallet 2 0 8 bin mallet ldamallet gen
  • seasonal_decompose:操作数无法与系列上的形状一起广播

    我知道关于这个话题有很多问题 但没有一个能帮助我解决这个问题 我真的很坚持这个 用一个简单的系列 0 2016 01 31 266 2016 02 29 235 2016 03 31 347 2016 04 30 514 2016 05 3
  • 带有外部图像的 box2d-js 元素

    到目前为止 在各种 box2d js 实现的示例中 我只能找到形状 球 盒子 等 中定义的元素 有没有办法创建由图像定义的元素 例如一块巨石 您可以使用b2PolyDef and b2PolyShape对象来创建多边形 本文档 http w
  • Haskell - 简单构造函数比较(?)函数

    在我的项目中 我创建了一种数据类型 它可以保存几种类型的值之一 data PhpValue VoidValue IntValue Integer BoolValue Bool 我现在想做的是有一种简单的方法来检查两个值是否PhpValue类
  • Google 身份验证器作为公共服务提供吗?

    是否有公共 API 可以使用 双因素身份验证 在自运行 例如 LAMP 堆栈 Web 应用程序上 The project http code google com p google authenticator 是开源的 我没用过 但它使用记
  • vertx 应用程序中的 CORS 问题无法正常工作

    我的 Vertx 服务器驻留在服务器 A 中 客户端驻留在服务器 B 中 当我尝试访问 vertx 服务器时 弹出 CORS 错误 我添加了一些服务器端代码来处理 CORS 问题 但它不起作用 我们是否需要在客户端添加一些标头 我在这里缺少
  • Yii:需要 .php 文件

    我用 Yii 开发一个项目 我需要一个普通的 php 文件 不是组件 不是类 只是 PHP 函数定义的常规序列 在 Yii 框架下执行此操作的正确方法是什么 我应该使用普通的 require once 吗 require once Yii
  • 如何从雅虎财经下载仅限 100 行的数据

    所以我正在做这个项目 我必须从雅虎财经下载历史股票数据 得到了这个代码 它工作正常 但最多只能下载 100 行 我尝试在网上扫描答案或不同的代码 这个只是从 Excel 中录制的宏 但我在 YouTube 上看到了一些使用他的解决方案的教程
  • ...联合问题中不允许使用构造函数

    我迫切需要找到以下问题的解决方案 namespace test template
  • C#:相当于 python try/catch/else 块

    在Python中 有这样有用的异常处理代码 try Code that could raise an exception except Exception Exception handling else Code to execute if
  • Cuda C 上任意大小的矩阵转置(具有共享内存)

    我无法找到在 CUDA C 中使用共享内存转置非方矩阵的方法 我是 CUDA C 和 C 的新手 In 这篇博文 https developer nvidia com blog efficient matrix transpose cuda
  • Jquery ui 自动完成 - 多个来源

    对于 1 个源 这是 ajax 调用后的正确代码 url links2 xml 我希望源是多个 xml 文件 如何包含额外的路径 Thanks 首先 docs http docs jquery com UI API 1 8 Autocomp
  • Angular $q.when 是如何工作的?

    有人可以解释一下怎么做吗 q when在 AngularJS 中工作 我正在尝试分析如何 http工作并发现了这个 var promise q when config 这是来自 Chrome 控制台的配置对象 Object transfor
  • 如果我在 Python 3 中将文件截断为零,我还需要寻找零位置吗?

    根据来自的回答这个问题 https stackoverflow com questions 8945370 garbage in file after truncate0 in python呼叫truncate实际上并没有移动文件的位置 所
  • 安装上的自动对焦输入 (Vue) - iOS

    我想在 Vue 组件出现时触发输入框聚焦 从而弹出键盘 它不起作用iOS 我尝试使用 Vue 的示例指令 here https v2 vuejs org v2 guide custom directive html 和 HTML5autoF
  • 如何在 CakePHP 中执行自定义查询

    我目前正在尝试在 CakePHP 框架中执行自定义查询 这意味着我不想使用 CakePHP 语法 而是想执行普通的 SQL 查询 例如SELECT FROM post ORDER BY id desc 我不知道该怎么做 我阅读了类似问题的几
  • 如何以编程方式在RelativeLayout中布局视图?

    我试图以编程方式 而不是通过 XML 声明方式 实现以下目标