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

Я хотел бы определить свой собственный класс представлений, который состоит из нескольких Textview, 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, который определяет макет только один раз.

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

1 Ответ

1 голос
/ 23 февраля 2012

Для повторного использования общего XML-кода:

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

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

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

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

РЕДАКТИРОВАТЬ: после проба, указанного в комментариях:

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

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

TextView tv2 = (TextView)layout2.findViewById(R.id.commonTextView);   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...