java - 在 Android 中创建复合 View

标签 java android views

我想创建一个自定义 View (我将其称为 MyComplexView),例如带有 ImageviewRelativeLayout,一个 TextView 和一个 Button

我想用布局声明一个 xml,然后创建类:

MyComplexView extends RelativeLayout{...}

但我不知道应该重写什么来指示应该扩充哪个布局。

我该怎么做?谢谢

最佳答案

像这样:

  1. 从父类(super class)中添加构造函数。 (只有上下文的用于以编程方式创建 View ,其他用于在 XML 中添加 View 。

  2. 创建一个名为 init() 的方法,并从每个构造函数中调用它。

  3. 在 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/

相关文章:

Android 动画 ObjectAnimator 从中心旋转

android - onSaveInstanceState 是否应该保存 View 的 "enabledness"?

parameters - AngularJS:用于路由的 url 参数

java awt 或 Swing 组件丢失或未显示

java - 在一项 Activity 中运行加速度计和陀螺仪扫描

android - 如何计算在 Android 项目中作为依赖项添加的库的大小

php - 按类别和 WordPress 中的查看次数计算帖子

java - 是否可以修改一个非 volatile 变量,使另一个线程能够 "see"更新?

Java 7 : An array as input

java - 基本java问题: Type casting