объединение нескольких элементов пользовательского интерфейса в одном классе представления

1

Я хотел бы определить свой собственный класс представления, который состоит из нескольких Textviews, ImageViews, ProgressViews в один DisplayClass с этими элементами.

Идея заключается в том, что можно многократно использовать DisplayClass в XML и легко получать/обновлять различные экземпляры DisplayClass.

В XML это будет выглядеть как один индивидуальный виджет, который используется несколько раз, например здесь...

    <myDisplayClass
                android:id="@+id/id1"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:leftText ="x1..."
                android:midText = "y1.."
                android:topText = "z1.."
                ...and other fields />

  <myDisplayClass
                android:id="@+id/id2"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:leftText ="x2..."
                android:midText = "y2.."
                android:topText = "z2.."
                ...and other fields />

 <myDisplayClass
                android:id="@+id/id3"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:leftText ="x3..."
                android:midText = "y3.."
                android:topText = "z3.."
                ...and other fields />

<myDisplayClass
                android:id="@+id/id_n"
                android:layout_width="60dp"
                android:layout_height="wrap_content"
                android:leftText ="x.n.."
                android:midText = "y.n."
                android:topText = "z.n."
                ...and other fields />

Хотя он основан на одном макете display_class.xml, который определяет макет только один раз.

Большое спасибо за любые идеи, подсказки или доступные примеры/учебные пособия.

Теги:
textview

1 ответ

1
Лучший ответ

Чтобы повторно использовать обычный xml-код:

вы можете определить его в отдельном макете, например commonlayout.xml, который будет иметь линейный/относительный макет и т.д. как родительский со всеми видами, которые вы хотите там.

В любом коде xml вы хотите использовать этот макет, вы можете просто использовать

<include layout="@layout/commonlayout"/>

PS: Я не вижу необходимости определять myDisplayClass в заданном вами вопросе, если вы просто хотите использовать EditText/TextViews/Widgets по умолчанию и т. Д.. или, может быть, вы можете объяснить это, если бы упомянутый ответ не был вами мы ищем..

EDIT: после запроса, указанного в комментариях:

View layout1 = findViewById(R.id.layout1); 
TextView tv = (TextView)layout1.findViewById(R.id.commonTextView);   

аналогично для другого текста во втором макете

TextView tv2 = (TextView)layout2.findViewById(R.id.commonTextView);   
  • 0
    допустим, в этом числе есть 3 TextViews. Поэтому при написании <include android: id = "@ + id / commonlayout1" layout = "@ layout / common_layout_stuff" /> следует другой <include android: id = "@ + id / commonlayout1" layout = "@ layout / common_layout_stuff" /> нельзя получить доступ к трем текстовым представлениям первого или второго, так как базовые текстовые представления имеют одинаковые идентификаторы. Только верхние элементы имеют разные идентификаторы, например, commonlayout1 и 2 - это означает, что нельзя использовать это, к сожалению, при доступе к контенту - или я что-то здесь упустил?
  • 0
    проверить обновленный ответ ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню