如何构建参数化的自定义布局?

发布于 2024-10-31 18:25:45 字数 489 浏览 1 评论 0原文

我的应用程序主要是关于操纵和显示特定实体的不同视图。我有一个名为 Item 的类,它在我的应用程序中定义了一个实体。我创建了一个自定义布局,它知道如何呈现特定版本的 Item

public class MyItemLayout extends FrameLayout {
    public MyItemLayout(Context context, AttributeSet attrs) { ... }
}

我希望能够在 XML 中引用它:

<MyItemLayout .../>

我还不明白的是:

  1. 我如何引用XML 中的这个?
  2. 如何设置元素的 Item 实例?我无法在 XML 中做到这一点(或者我可以吗?),那么我该如何在代码中做到这一点呢?

谢谢。

My app is all about manipulating and showing different views of a particular entity. I have a class called Item that defines an entity in my app. I have created a custom layout that knows how to render a particular version of Items:

public class MyItemLayout extends FrameLayout {
    public MyItemLayout(Context context, AttributeSet attrs) { ... }
}

I would like to be able to reference this in XML:

<MyItemLayout .../>

What I don't understand yet is:

  1. How do I reference this in XML?
  2. How do I set the Item instance for the element? I can't do that in XML (or can I?), so how would I do it in code?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怎会甘心 2024-11-07 18:25:45

引用自定义组件(View 或 ViewGroup)的一种方法是使用完整的包名称,例如

还可以选择从 XML 中的声明传递数据在构造函数中使用AttributeSet。如果您在 XML 中设置属性,则可以使用此类中的方法(例如 getFloatValue())获取它。

所以:
第 1 步:执行类似 的操作
第2步:在MyItemLayout构造函数中调用attrs.getFloatValue()(或您想要的任何类型)来获取数据

希望它有帮助
JQ科雷亚

One way for you to reference a custom component (View or ViewGroup) is to have the full package name, like <com.foo.bar.MyItemLayout>

One option also to pass data from declaration in XML is using the AttributeSet in the constructor. If you set an attribute in XML you can fetch it using the methods from this class (getFloatValue() for example).

So:
Step 1: Do something like <com.foo.bar.MyItemLayout item="xxxx"></com.foo.bar.MyItemLayout>
Step 2: In MyItemLayout constructor call attrs.getFloatValue() (or whatever type you wish) to get the data

Hope it helped
JQCorreia

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文