Android LinearLayout 或RelativeLayout 帮助

2024-01-07

我需要以编程方式创建两个视图(因为我需要访问其中一个视图的 ondraw)。由于某种原因,无论我如何将视图添加到内容视图,它们都不会垂直堆叠显示,一个在另一个下面。

我可以使用具有RelativeLayout 和布局定位的XML 来完成此操作,但是使用XML 我无法创建视图对象并重载ondraw 方法。

我的程序化方法做错了什么?我该如何解决这个问题?

LinearLayout mLinearLayout;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Create a LinearLayout in which to add the ImageView
        mLinearLayout = new LinearLayout(this);

        TextView tv = new TextView(this);
            tv.setBackgroundColor(0xff333333);
        tv.setText("Enter your member number:");
        tv.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));



        DrawableView i = new DrawableView(this);
        i.layout(0,40,0,0);
        i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));

        mLinearLayout.addView(tv);
        mLinearLayout.addView(i,300,300);
        setContentView(mLinearLayout);
    }

尽管调试此代码比调试 XML 更困难,但似乎存在两个问题。

首先,您未能将线性布局的方向设置为垂直。对于水平方向,一切都将是一条线。对于垂直布局,每个小部件都将位于从上到下的单独行上。

其次,“填充父级”看起来很可疑。任何填充父项,除非相对布局或绝对大小阻止它,都会接管所有内容并隐藏所有其他小部件。这几乎总是错误的解决方案。尝试使用重物代替。

您可能会考虑首先按照您喜欢的方式在 XML 中实现此目的,然后将其转换为编程设置,尽可能保持转换机械化。祝你好运!

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

Android LinearLayout 或RelativeLayout 帮助 的相关文章

随机推荐

  • 在比较函数中使用非静态类成员

    我目前正在开发一个语法分析器类 它需要在代码的某个点对包含运算符信息的结构进行排序 每个运算符都有一个优先级 这是用户通过我的分析器类的公共成员函数定义的 因此 在排序时 我需要排序函数根据相应运算符的优先级对元素进行排序 我使用以下代码来
  • python - 如何将日期时间对象舍入到最近的前一刻钟?

    假设我有日期时间对象 我希望它们四舍五入到最近的前一刻钟 2014 07 18T14 23 12 gt 2014 07 18T14 15 00 2014 07 18T14 14 59 gt 2014 07 18T14 00 00 2014
  • 高效克隆缓存对象

    我们有一个应用程序 可以对数据对象进行比较 以确定对象的一个 版本是否与另一个版本不同 我们的应用程序还对这些对象进行了一些广泛的缓存 并且在进行这些比较时我们遇到了一些性能问题 这是工作流程 数据项 1 是内存中的当前项 该项目最初是从缓
  • VC++ Visual Studio 在子目录中添加了 .hpp 文件,但出现“错误:无法打开源文件...”

    这让我抓狂 我在现有 VC 项目源目录的根目录中的子目录中添加了许多 hpp 文件 Visual Studio 抱怨 错误 无法打开源文件 但如果我右键单击并选择打开文档 VS 可以显示它 我试过了 重新扫描解决方案 似乎什么也没做 添加现
  • 是否有一种非 Java 跨平台方式来启动特定文件类型的关联应用程序?

    First 我找到了一对 https stackoverflow com questions 550329 how to open a file with the default associated program of java具体问题
  • 如何将现有的 3rd-party Jars 集合上传到 Gradle 中的 Maven 服务器?

    如何将现有 Jars 集合上传到 Maven 存储库 这些 Jars 是从导入到 Gradle 的 ANT 任务构建的 并用作我的任务的依赖项 这些 Jars 没有版本标签 因此它们在上传时应该都会收到相同的版本号 apply plugin
  • AngularJS 相当于 Angular ng-container

    这里是 AngularJS 的 Angular 等价物吗ng 容器 https angular io guide structural directives ngcontainer 或者我应该用嵌入指令自己创建一些东西 示例用例 具有交错的
  • MySQL:约束两列,因此其中一列始终为 NULL

    我有一个表 其中的两列引用了另外两个表 PK 有没有办法可以限制这两列设置值 我只希望其中一个设置值 而另一个为 NULL 收藏夹 id table 1 id table 2 id Table 1 id Table 2 id 在 SQL 中
  • 接口、抽象还是只是虚拟方法?

    我有一堆系统 让我们称它们为A B C D E F G H I J 它们都有相似的方法和属性 有些包含完全相同的方法和属性 有些可能略有不同 有些可能差异很大 现在 我每个系统都有很多重复的代码 例如 我有一个名为GetPropertyIn
  • 使用正则表达式仅匹配第 n 次出现

    我有一个包含 3 个日期的字符串 如下所示 XXXXX 20160207 20180208 XXXXXXX 20190408T160742 xxxxx 我想选择字符串中的第二个日期 即20180208 one 有没有办法纯粹在regex 必
  • 如何预先计算有效的组合数量而不是使用 while 循环?

    给定数据中心列表 dc1 dc2 dc3 和机器列表 h1 h2 h3 h4 如下所述 Datacenters dc1 dc2 dc3 Machines h1 h2 h3 h4 我只想生成以下组合 a dc1 h1 dc3 h3 dc2 h
  • 在Android中使用Ada代码

    Android 中是否有可能使用旧的 Ada 代码 我有一个用 Ada 编写的旧脚本 如果我可以直接在 Android 中使用该代码 通过 NDK 或 JNI 等 那就太好了 这可能吗 或者我应该移植代码 以下是我找到的一些链接 但我不太明
  • 角度日期解析意外输出

    我正在尝试使用显示日期date动作 但它给出了奇怪的输出 mydate date mm dd yyyy 该月份似乎不一致且不正确 这是怎么回事 你需要使用MM显示月份 mydate date MM dd yyyy 来自文档 https do
  • fork() 子进程和父进程

    我正在尝试创建一个使用 fork 来创建新进程的程序 示例输出应如下所示 这是子进程 我的 pid 是 733 我父母的 id 是 772 这是父进程 我的pid是772 我孩子的id是773 这就是我编写程序的方式 include
  • 如何更改 Material UI 中的选项卡宽度

    我正在使用 Material UI 选项卡 v0 20 0 以表格格式显示内容 选项卡采用全宽 我附上了预期和当前输出的屏幕截图 Expected output Current Output 请让我知道同样的解决方案 如果您想要固定宽度的选
  • 如何将 NSArray 存储在 NSDictionary 中?

    我正在尝试自学 但正在努力解决如何在 NSDictionary 中存储 NSArray 等内容 假设您有一个用于食谱的 NSDictionary 假设 NSDictionary 有如下键 意大利细面条 阿尔弗雷多宽面条 烤鸡肉沙拉 NSDi
  • 在仅包含该语句的方法中用简单赋值替换 Volatile.Write() 是否安全?

    这是C 多线程中的一个高级问题 假设我有这样的代码 用作锁定机制 仅允许一个线程启动某些操作 private static int guard 0 private static bool acquire return Interlocked
  • 在移动服务数据库上启用代码优先迁移时出错

    我有一个最近创建的 Azure 移动服务项目 C 后端 并将其附加到 Azure SQL 数据库 我一直在尝试在该支持数据库上启用代码优先迁移 但当我尝试更新数据库时它会引发错误 我完成了启用迁移的所有常规步骤 启用迁移 添加迁移 但是当我
  • 从 dict 返回前 N 个键:值对

    考虑以下字典 d d a 3 b 2 c 3 d 4 e 5 我想返回 d 中的前 N 个键 值对 在本例中为 N 不存在 前 n 个键这样的事情 因为dict不记得首先插入了哪些键 你可以得到anyn 个键值对 n items take
  • Android LinearLayout 或RelativeLayout 帮助

    我需要以编程方式创建两个视图 因为我需要访问其中一个视图的 ondraw 由于某种原因 无论我如何将视图添加到内容视图 它们都不会垂直堆叠显示 一个在另一个下面 我可以使用具有RelativeLayout 和布局定位的XML 来完成此操作