Изменение вложенных атрибутов во включенном макете - PullRequest
9 голосов
/ 12 июля 2011

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

<RelativeLayout android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                style="@style/menu_header">

    <Button android:id="@+id/backButton"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            style="@style/button"
            android:text="@string/back"/>

    <TextView style="@style/headerTitle"
              android:layout_centerInParent="true"
              android:text="${title}"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content"/>
</RelativeLayout>

Тогда я могу включить это в другие макеты, используя:

<LinearLayout ...>
   <include android:id="@+id/searchHeader" layout="@layout/shared_header" title="Search"/>
   ...
</LinearLayout>

Я знаю, что могу изменить любой атрибут layout_ * корневого элемента, но я могу определить другие атрибуты, которые подставляются в макет, например, сказать «title» в этом примере, без необходимости создавать собственный подкласс View объявляемые в стиле определения в valaues / resources и т. д.?

Наличие чего-то подобного значительно упростит создание многоразовых представлений, но я не могу найти никаких доказательств того, что слияние + включение может это сделать.

1 Ответ

5 голосов
/ 26 июля 2011

Ответ - нет.К сожалению, Android не такой мощный.Вы должны создать собственное расширение ViewGroup и написать больше кода.

...