如何构建参数化的自定义布局?
我的应用程序主要是关于操纵和显示特定实体的不同视图。我有一个名为 Item
的类,它在我的应用程序中定义了一个实体。我创建了一个自定义布局,它知道如何呈现特定版本的 Item
:
public class MyItemLayout extends FrameLayout {
public MyItemLayout(Context context, AttributeSet attrs) { ... }
}
我希望能够在 XML 中引用它:
<MyItemLayout .../>
我还不明白的是:
- 我如何引用XML 中的这个?
- 如何设置元素的
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 Item
s:
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:
- How do I reference this in XML?
- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
引用自定义组件(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 callattrs.getFloatValue()
(or whatever type you wish) to get the dataHope it helped
JQCorreia