Herdar Layouts - Android

Bom Dia,

Galera, é o seguinte: eu quero usar uma tela de layout como “PAI” e todas as outras herdar esse layout, sendo assim, se eu precisar mudar a posição de um logo e etc … eu só mudo o “PAI” e irá afetar os filhos. Eu li no androiddeveloper que tem como aplicar temas, porem o link de exemplo lá está quebrado.

Tem como alguem dar um exemplo de como aplicar isso?

Tem como dar um exemplo do que voce quer fazer?

Ok, vamos lá, eu quero aplicar um tema para uma aplicação inteira, entendeu? Eu tenho lá o xml que tem o layout da tela com todos seus componentes, em vez de eu colocar lá na mão, toda vez o background, logo e etc … eu quero que ele HERDE o tema com já tudo definido, entendeu? É bem simples, eu acho, só preciso saber como configurar o manifesto e como configurar meu xml que irá ficar dentro do [values].

Herde tudo - e eu só precise colocar os componentes em cada layout e não background e bla bla.

Themes oferecem varias coisas para customizar.

Um exemplo que uso:

Dentro de res/values/styles.xml


	<style name="Transp" parent="android:Theme.Dialog">
		<item name="android:windowNoTitle">true</item>
		<item name="android:layout_width">wrap_content</item>
		<item name="android:layout_height">wrap_content</item>
		<item name="android:gravity">center</item>
		<item name="android:windowIsTranslucent">true</item>
		<item name="android:windowFrame">@null</item>
		<item name="android:windowBackground">@android:color/transparent</item>
		<item name="android:windowIsFloating">true</item>
		<item name="android:windowContentOverlay">@null</item>
		<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
		<item name="android:backgroundDimEnabled">true</item>
		<item name="android:background">@android:color/transparent</item>
	</style>

Dai para usar (via Manifest):

	<activity android:icon="@drawable/icon" android:name=".ReaderDemoActivity"
			android:label="Reader Tablet" android:theme="@style/Transp">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>

Tambem é possivel aplicar temas diretos nos componentes.

@Marky.Vasconcelos

Ok, vlw pelos exemplos, vou testar aqui e fazer alguns teste, qualquer coisa eu volto a perguntar, valeu pela ajuda.

Outra Duvida: A aplicação a qual estou desenvolvendo quero fazer ela multi-resolution, sendo assim, eu precisarei de imagems ldpi, mdpi e hdpi, certo? Quais são os numeros exatos de l,m e h.
Para eu efetuar isso, fazer uma aplicação multi-resolution, eu consigo somente utilizando relative-layout?
Uma aplicação desenvolvida encima do android 2.2 irá rodar nos tablets/smart phones com Android’s 1.6? Porque eu andei lendo que alguns tablets e outros smartphones ainda estão sendo lançado com essa versão. Alguem sabe de qualquer problema, conhecido de não compatibilidade da versão 2.2 para 1.6 que eu preci-se ficar sabendo?

De qualquer maneira, muito obrigado pela ajuda Marky, tem sido muito ultil.

Eu nao sei exatamente os numeros exatos, principalmente por que é uma relação entre a quantida de pixels pelo tamanho do device.

Sua aplicação só nao vai se comportar se voce usar AbsoluteLayout, todos os outros dão uma maneira de se esticar.

Agora, acho que suportar 1.6 é um exagero.

Só para ter certeza, se eu tenho um main template como esse:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:fillViewport="true" android:focusable="true" android:focusableInTouchMode="true">

	<LinearLayout android:layout_width="fill_parent"
		android:id="@+id/header" android:padding="5dip"
		android:layout_gravity="top" android:layout_height="wrap_content"
		android:orientation="vertical" android:background="@drawable/headerfooterbackground">

		<ImageView android:layout_gravity="center" android:id="@+id/imageView1"
			android:src="@drawable/logo" android:layout_height="wrap_content"
			android:layout_width="fill_parent"></ImageView>
		<TextView android:id="@+id/editText1" android:text="@string/header"
			android:layout_width="fill_parent" android:layout_height="wrap_content"
			android:gravity="center" android:textColor="@android:color/white">
		</TextView>
	</LinearLayout>


	<LinearLayout android:layout_width="fill_parent" 
          android:layout_weight="1.0"
		android:background="@color/background" android:id="@+id/workspace"
		android:layout_height="wrap_content" android:layout_gravity="center">
	<!--  Workspace -->
  
  // Aqui vem componentes e etc


	<!--  Workspace -->
	</LinearLayout>



	<LinearLayout android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:layout_gravity="bottom"
		android:background="@drawable/headerfooterbackground"
		android:orientation="horizontal" android:gravity="center">

		<ImageView android:id="@+id/imageView2"
			android:layout_height="wrap_content" android:src="@drawable/cadeado"
			android:layout_width="wrap_content" android:adjustViewBounds="true"></ImageView>

		<TextView android:text="@string/footer"
			android:padding="5dip" android:textColor="@android:color/white"
			android:layout_width="wrap_content" android:gravity="center"
			android:layout_height="wrap_content"></TextView>
	</LinearLayout>


</LinearLayout>

É so colocar tudo isso dentro de um item? e depois no layout de cada “pagina” colocar os componentes?

No seu caso, voce deve ter uma Activity que faz mais ou menos o seguinte:

public class DefaultActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstance) {
        super.onCreate(savedInstance);
        setContentView(R.layout.layoutPrincipal);
        LinearLayout workspace = (LinearLayout) findViewById(R.id.workspace);
        //Infla dentro do workspace o que é diferenciado a cada janela
    }
}

ldpi -> 260dp x 320dp
mdpi -> 320dp x 480dp
hdpi -> 640dp x 480dp
xhdpi -> 960dp x 720dp

Dá uma lida neste artigo: http://developer.android.com/guide/practices/screens_support.html

Abraço :slight_smile: