Android:如何创建自定义组件

发布于 2024-12-29 01:36:24 字数 374 浏览 0 评论 0原文

任何人请指导我,

如何在 xml 和 java 文件中创建自定义组件

  1. 从 xml 传递属性(这我有点完成)

  2. 如何传递来自 new customClass() 构造函数方法的动态属性。 -- 我不知道如何实现这一点

,例如:我创建了一个自定义组件,其中两个文本视图作为单个组件。在 xml 中,我通过 xml 属性创建了两个组件。现在我想通过java代码创建两个新组件 通过调用我的 customClass.java 的构造函数,我不知道如何从 java 代码动态创建新组件以及如何在视图中显示它(比如相对布局)请帮助我提供任何链接或博客。

我为此花了 1 周时间,但没有得到任何解决方案,请帮助我

Any one please guide me,

How to create a custom component in xml and java file

  1. pass attributes from xml (this i somewhat completed)

  2. how to pass attributes dynamically from new customClass() -- constructor method. -- i dont know how to implement this point

for Eg : I created a custom component with two textview as a single component. In xml i created two component by xml attributes. Now i want to create two new component by java code
by calling the constructor of my customClass.java I dont know how to create a new component dynamically from java code and how to display that in a view(Say a relative layout) Please help me provide any link or blog.

I have spent 1 week for this, But i didnt get any solution please help me

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

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

发布评论

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

评论(2

腻橙味 2025-01-05 01:36:24

它非常简单:

在您的布局 xml 文件中,只需放置以下几行 xml 代码:

<com.example.project.MyComponent
  android:id="@+id/myid"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>

现在,编写一个名为您的组件的类:

public class MyComponent extends RelativeLayout {
  public MyComponent(Context context, AttributeSet attr) {
    super(context,attr);
  }

  @Override
  public void onFinishInflate() {
    // this is the right point to do some things with View objects,
    // as example childs of THIS View object
  }
}

记住构造函数:LayoutInflater 需要此构造函数来
找到你的组件。并且,不要忘记在需要时调用 super(...) 。

its very simple:

in your layout xml file simply put the following lines of xml code:

<com.example.project.MyComponent
  android:id="@+id/myid"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>

Now, write a class named as your component:

public class MyComponent extends RelativeLayout {
  public MyComponent(Context context, AttributeSet attr) {
    super(context,attr);
  }

  @Override
  public void onFinishInflate() {
    // this is the right point to do some things with View objects,
    // as example childs of THIS View object
  }
}

Remember the constructor: this constructor is needed by the LayoutInflater to
find your component. And, dont forget to call super(...) when required.

秋叶绚丽 2025-01-05 01:36:24

您可以通过在其参数中使用上下文调用构造函数,然后使用 getter setter 设置属性来完成此操作。您可以在 Android 技术点

MyComponent mycomponent = new MyComponent(context);
myComponent.setFirstTextView("text1");
myComponent.setSecondTextView("text2");

然后最后

layout.addView(myComponent);

You can do this by calling the constructor with context in its parameter and then setting the attributes with getter setters. You can find a good tutorial at Android tech point

MyComponent mycomponent = new MyComponent(context);
myComponent.setFirstTextView("text1");
myComponent.setSecondTextView("text2");

And then finally

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