Modificando os atributos aninhados em um layout incluído

9

Eu tenho aprendido sobre mesclar e incluir ultimamente, e tenho uma pergunta que não consigo descobrir a resposta também. Digamos que eu tenha um layout que defina um componente de cabeçalho que desejo adicionar a vários layouts. No entanto, quero alterar o título ou o ícone de cada cabeçalho para cada uso de inclusão. Por exemplo, digamos que eu tenha o seguinte layout:

<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>

Então, posso incluir isso em outros layouts usando:

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

Eu sei que posso modificar qualquer atributo layout_ * do elemento raiz, mas posso definir outros atributos que são substituídos no layout, como "título" neste exemplo, sem ter que criar minha própria subclasse de Exibir, adicionar declarar definições estilizadas em valores / recursos, etc?

Ter algo como isso tornaria a criação de visualizações reutilizáveis muito mais simples, mas parece que não consigo encontrar nenhuma evidência que diga se a mesclagem + inclusão pode fazer isso.

    
por chubbsondubs 12.07.2011 в 20:34
fonte

1 resposta

5

A resposta é não. Infelizmente, o Android não é tão poderoso. Você tem que criar sua própria extensão do ViewGroup e escrever mais código.

    
por chubbsondubs 26.07.2011 / 03:12
fonte