gpt4 book ai didi

android - 以编程方式在 RelativeLayout 中堆叠 subview

转载 作者:行者123 更新时间:2023-11-30 03:28:11 25 4
gpt4 key购买 nike

在我的应用程序中,我试图模仿 SMS 消息传递应用程序的对话 View ,其中发送的消息与左边距对齐,接收的消息与右边距对齐。我正在使用自定义 RelativeLayout实现左/右对齐,我添加了 TextView s 在运行时动态地调用我自定义的方法 RelativeLayout .

我遇到的问题是,当我添加 TextView s 在第一个之后,它们被一个放在另一个之上(在相同的 x,y 处),而不是垂直堆叠(增加 y)。

这是我添加 TextView 的代码:

TextView txt = new TextView(mContext);
RelativeLayout.LayoutParams params =
new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.addRule(sent ? ALIGN_PARENT_LEFT : ALIGN_PARENT_RIGHT);

// make sure this message is positioned below the last one
if (getChildCount() > 0) {
params.addRule(BELOW, getChildAt(getChildCount() - 1).getId());
}

txt.setLayoutParams(params);
txt.setText(msg);

addView(txt);

我的习惯RelativeView定义如下:

<com.foo.bar.ConversationLayout
android:id="@+id/loConvo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>

感谢任何帮助。

谢谢!

最佳答案

据我所知,您没有为要添加的 TextViews 设置任何 ID。所以,当你打电话时:

params.addRule(BELOW, getChildAt(getChildCount() - 1).getId());

getId() 返回 NO_ID

来自 View 类的文档:getId() 返回一个用于标识 View 的正整数,如果 View 没有 ID,则返回 NO_ID

NO_ID 用于标记没有 ID 的 View

尝试使用 setId(yourGivenId)setId(View.generateViewId()) 为您的 TextView 设置 ID,看看这是否有助于解决问题。

关于android - 以编程方式在 RelativeLayout 中堆叠 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17903893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com