我想创建一个自定义 View (我将其称为 MyComplexView
),例如带有 Imageview
的 RelativeLayout
,一个 TextView
和一个 Button
。
我想用布局声明一个 xml,然后创建类:
MyComplexView extends RelativeLayout{...}
但我不知道应该重写什么来指示应该扩充哪个布局。
我该怎么做?谢谢
最佳答案
像这样:
从父类(super class)中添加构造函数。 (只有上下文的用于以编程方式创建 View ,其他用于在 XML 中添加 View 。
创建一个名为
init()
的方法,并从每个构造函数中调用它。在 init 方法中做:
LayoutInflater.from(context).inflate(R.layout.my_view_layout, this, true);
现在 inflate 附加参数实际上意味着:
true -> 在你的案例相对布局中将布局附加到根(专业提示:所以在 xml 中,如果你的布局根也是相对布局,你可以只合并标签,并在代码中对齐它们,这样层次结构更简单) 或您喜欢的任何布局。
this -> 将膨胀 View 附加到你的情况下你正在扩展的相对布局的布局。
它会自动附加到根 -> extends RelativeLayout。
然后您可以像这样使用 findViewById:
this.findViewById(R.id.myView);
关于java - 在 Android 中创建复合 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11085188/