Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
Introdução
A documentação do Android, disponível em http://developer.android.com/intl/pt-
br/guide/topics/ui/themes.html, define um estilo como sendo uma “coleção de propriedades
que especificam o visual e o formato de um dado View ou Window”. Neste ponto é bom
lembrarmos que todos os widgets (botões, campos de texto e afins) que utilizamos nos
fragmentos são Views, como pode ser percebido em:
A documentação também faz referência aos Temas, que nada mais são do que uma coleção de
estilos.
Por fim, ela também introduz o conceito de herança de estilos, a qual funciona de maneira
similar à herança de objetos em Java, isto é, permitindo a criação de um objeto (estilo) filho
que defina ou redefina apenas um conjunto de propriedades, delegando aquelas que não
foram alteradas para a definição presente no estilo pai. Vale salientar que a herança possui
múltiplos níveis e que caso nenhum dos estilos da cadeia hereditária definam a propriedade o
Android utilizará o valor padrão presente nas configurações do sistema.
Método 1: Alterando Propriedades de um Elemento
Podemos definir as propriedades de estilo de um elemento, um botão por exemplo, alterando
os valores configurados na tela de Design do Android Studio ou mesmo editando o XML do
fragmento no qual o elemento está inserido.
Esse método foi utilizado durante o curso para definir a cor do botão de gravação (“R”) do
Painel de Sons para vermelho. Assim, basta fazer a alteração conforme exibido na tela:
<Button
android:text="R"
android:id="@+id/button_R"
android:layout_column="1"
android:layout_row="1"
android:textColor="#ff0000"
android:longClickable="true"/>
http://developer.android.com/intl/pt-br/reference/android/R.attr.html
Assim, adicionando a linha em negrito no XML no fragmento principal de nossa MainActivity:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="curso.android.MainActivity$PlaceholderFragment"
android:background="@color/gray">
Note que o editor, o qual processa o XML para gerar a visualização, já disponibiliza a
propriedade atualizada.
Nossa aplicação já foi criada com um arquivo padrão chamado styles.xml e que possui o
seguinte conteúdo:
<resources>
<style name="AppTheme"
parent="android:Theme.Holo.Light.DarkActionBar">
</style>
</resources>
android:theme="@style/AppTheme"
Apesar de “vazio” este é o arquivo que define o estilo e as propriedades atuais de nossa
aplicação. O segredo aqui está justamente na herança, definida no elemento <style> pelo
atributo parente. Assim, nosso estilo padrão injeta os valores definidos no tema de sistema
“android:Theme.Holo.Light.DarkActionBar” sempre que lhe é requisitada uma
propriedade não declarada. Podemos confirmar este comportamento editando o arquivo para:
<style name="AppTheme"
parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:textColor">#00FF00</item>
</style>
Note, porém, que o texto dos botões não mudou de cor. Isso se deve ao botão ser um View
composto e haver injeção de outro estilo na herança. Podemos aplicar o estilo diretamente no
botão, o que fará com que o texto mude para verde:
Outro exemplo, desta vez utilizando estilos compostos pode ser utilizado para alterar a cor da
ActionBar:
<resources>
<style name="AppTheme"
parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:textColor">#00FF00</item>
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar"
parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">#C1000E</item>
</style>
</resources>
Bônus: Usando Drawables
O Android oferece uma interface geral, Drawable, com algumas implementações diferentes
que permitem a renderização personalizada de elementos da tela, como botões. As opções de
Drawable estão documentadas em:
http://developer.android.com/intl/pt-
br/guide/topics/resources/drawable-resource.html