Android: как создать пользовательский компонент - PullRequest
1 голос
/ 24 января 2012

Любой, пожалуйста, помогите мне,

Как создать пользовательский компонент в XML и Java-файле

  1. передать атрибуты из XML (это я несколько закончил)

  2. как динамически передавать атрибуты из нового метода customClass () - конструктора.- Я не знаю, как реализовать эту точку

Например: я создал пользовательский компонент с двумя textview в качестве одного компонента.В XML я создал два компонента с помощью атрибутов XML.Теперь я хочу создать два новых компонента с помощью кода Java, вызвав конструктор моего customClass.java. Я не знаю, как динамически создать новый компонент из кода Java и как отобразить его в виде (скажите относительное расположение). Пожалуйста, помогите мнепредоставить любую ссылку или блог.

Я потратил на это 1 неделю, но я не получил никакого решения, пожалуйста, помогите мне

Ответы [ 2 ]

1 голос
/ 24 января 2012

это очень просто:

в вашем 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 (...), когда это необходимо.

0 голосов
/ 10 августа 2017

Это можно сделать, вызвав конструктор с контекстом в его параметре, а затем установив атрибуты с помощью установщиков-получателей.Вы можете найти хороший учебник в Техническая точка Android

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

И, наконец,

layout.addView(myComponent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...