Caro leitor,
Primeiramente desejo a você
um ótimo início de ano, com muita saúde, paz e sucesso profissional. Inicio
este ano redigindo um artigo sobre a plataforma Android, sendo que neste
abordarei o uso do widget “CardView”. Após analisar a documentação oficial, o cardview
herda da classe “FrameLayout”, permitindo a exibição de informações dentro dos
cartões, tendo uma aparência coerente nas diversas plataformas, podendo ser
configurado sombras e bordas arredondadas. Na Figura 01 podemos conferir a
estrutura da classe “android.support.v7.widget.CardView”.
![]() |
Figura 01: Estrutura Hierárquica. |
O “CardView” utiliza a propriedade de elevação (cardElevation)
na versão “Lollipop” (Android 5.0, API nível 21) e posteriores. Para as versões
mais antigas a implementação do efeito de sombra seria de forma emulada ou
programática.
Principais
Atributos
Nas próximas linhas irei descrever os atributos mais utilizados, confira
os detalhes na Tabela 01.
Nome do atributo do XML
|
Descrição
|
android.support.v7.cardview:cardBackgroundColor
|
Cor de fundo
do CardView, podendo ser um valor na forma “#rgb”, “#argb”, “ rrggbb”, etc
...
|
android.support.v7.cardview:cardCornerRadius
|
Configuração
de dimensão de canto. As unidades disponíveis são: px (pixels), dp (pisels
independentes, sp (pixels dimensionados com base na fonte), etc ...
|
android.support.v7.cardview:cardElevation
|
Elevação para
o widget, seguindos as mesmas unidades descritas acima.
|
android.support.v7.cardview:cardMaxElevation
|
Elevação
máxima, também seguindos as unidades supracitadas.
|
android.support.v7.cardview:cardPreventCornerOverlap
|
Preenchimento
ao CardView na versão v20, assim evitando interseções entre o conteúdo do
cartão e os cantos arredondados. Usaremos os valores booleanos: “true” ou
“false”
|
android.support.v7.cardview:cardUseCompatPadding
|
Adicione o
espaçamento a partir da versão API21,
conseguindo uma compatibilidade para versões anteriores. Usaremos atributos
booleanos para esta tarefa.
|
android.support.v7.cardview:contentPadding
|
Seria o
interior entre as bordas do Cardview. Usaremos valores de pixels descritos
anteriormente.
|
android.support.v7.cardview:contentPaddingBottom/
android.support.v7.cardview:contentPaddingLeft/
android.support.v7.cardview:contentPaddingRight/
android.support.v7.cardview:contentPaddingTop
|
Espaço interior
entre a borda inferior, lateral esquerda, direita e superior respectivamente.
Podemos utilizar como medidas os pixels descritos nos itens acima.
|
Tabela 01.
Principais
Construtores
Teremos três principais construtores, sendo o:
CardView
(Context context):
Passamos por parâmetros apenas o Contexto da aplicação.
CardView (Context context, AttributeSet attrs):
Informaremos por parâmetros o Contexto e valor da classe “AtributeSet”, que seria uma coleção de atributos, como os encontrados associados a uma tag em um documento XML.
Passamos por parâmetros apenas o Contexto da aplicação.
CardView (Context context, AttributeSet attrs):
Informaremos por parâmetros o Contexto e valor da classe “AtributeSet”, que seria uma coleção de atributos, como os encontrados associados a uma tag em um documento XML.
CardView
(Context context, AttributeSet attrs, int defStyleAttr):
No momento da criação usaremos os mesmos parâmetros citados anteriormente adicionados do atributo inteiro “defStyleAttr” que nada mais é do que um identificador para o atributo.
No momento da criação usaremos os mesmos parâmetros citados anteriormente adicionados do atributo inteiro “defStyleAttr” que nada mais é do que um identificador para o atributo.
Principais Métodos
Teremos inúmeros métodos referentes à classe “CardView”. Abaixo
destaquei alguns referentes ao retorno e outros de Atualização. Os famosos
(Gets e Sets) da programação orientada a objetos. Ver Tabela 02.
Nome do Método
|
Descrição
|
getCardElevation()
|
Retorna um
valor numérico a elevação do CardView.
|
getContentPaddingBottom()
|
Retorna um
valor numérico do tipo inteiro do preenchimento interno antes da borda
inferior do CardView. Temos os métodos getContentPaddingLeft(), getContentPaddingRight() e
getContentPaddingTop() que possuem praticamente a mesma característica
relacionada à região esquerda, direita e superior.
|
setCardElevation(float
elevation)
|
Setar,
atualizar a elevação do CardView.
|
setContentPadding(int left,
int top, int right, int bottom)
|
Define o
preenchimento entre as bordas do CardView.
|
setRadius(float radius)
|
Seta o raio de
canto do widget.
|
Tabela 02.
Importando a
Biblioteca
O primeiro passo para realizar a importação seria a criação de um novo
projeto no Android Studio. Para isto clique em “File/New/New Project ...”
Fiquem a vontade para inserir o nome como desejar, no meu caso foi criado com o
nome “Cardview”. Para nossos testes também foi escolhido o SDK (API 23: Android
6.0 - Marshmallow).
Após a criação do projeto, localize o arquivo “build.gradle (Module:
app)”, o qual foi gerado automaticamente. Entre as chaves { } do item
“dependencies” insira o código abaixo e logo após clique no link “Sync Now”
para reindexar o projeto com a bilioteca “CardView”. Confira os detalhes no
código e na Imagem 02 abaixo.
Exemplo:
dependencies {
. . . compile 'com.android.support:cardview-v7:24.1.1'
. . .
}
![]() |
Figura 02: Adicionando a referência do CardView. |
Criando um exemplo
prático
Localize o arquivo de layout, por exemplo:
“res/layout/activity_main.xml” o qual deverá estar provavelmente em branco,
apenas com o componente de Layout. Para adicionar o componente “CardView” basta
adicioná-lo com o auxílio da TAG “android.support.v7.widget.CardView” e dentro
do mesmo iremos implementar uma “ImageView” junto com dois “TextViews”. Teremos
o layout idêntico ao da Figura 03.
![]() |
Figura 03: Layout Proposto. |
Abaixo teremos o XML correspondente com explicações das principais
partes do código.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="datasmart.cardview.MainActivity">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="datasmart.cardview.MainActivity">
Para que o “CardView” funcione dentro
de algum elemento de layout como um “RelativeLayout” ou um “LinearLayout”, o
mesmo tem que conter a seguinte linha de identificação destacada acima.
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_gravity="center"
android:paddingBottom="10dp"
android:paddingTop="10dp"
app:cardBackgroundColor="@color/cardview_light_background"
app:cardCornerRadius="4dp">
Teremos algumas configurações padrões como “android:id”, altura e largura do layout, entre outras configurações. Faremos algumas configurações pertinentes da classe “CardView” como por exemplo o “app:cardBackgroundColor” para alterar a cor de fundo e “app:cardCornerRadius” para definir o arredondamento de canto do componente.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/txtTitulo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:paddingBottom="10dp"
android:paddingLeft="20dp"
android:paddingStart="20dp"
android:paddingTop="5dp"
android:text="DataSmart - Avaré/SP"
android:textColor="@android:color/black"
android:textSize="20dp"
android:textStyle="bold"/>
<ImageView
android:id="@+id/imgBanner"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_below="@id/txtTitulo"
android:scaleType="centerCrop"
android:src="@drawable/imagem"/>
<TextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/imgBanner"
android:layout_centerVertical="true"
android:layout_margin="4dp"
android:gravity="center"
android:maxLines="3"
android:padding="10dp"
android:text="Empresa que desenvolve softwares na área comercial para diversas plataformas."
android:textColor="@color/button_material_dark"
android:textSize="13dp" />
</LinearLayout>
Já para o componente “ImageView” apenas definimos a
Imagem, o layout e o tipo de escala. Para os componentes TextView não fazemos
nada de diferente, apenas informamos um texto simples para uma fácil
compreensão. É importante informar que ambos os componentes estão localizados
dentro de um “LinearLayout” e o mesmo situado no interior de um “CardView”, o
qual irá agrupá-los para uma melhor visualização.
</android.support.v7.widget.CardView>
</LinearLayout>
Podemos conferir o nosso aplicativo em run-time na Imagem 04.
![]() |
Figura 04: Aplicativo em funcionamento. |
Conclusões
Neste artigo foram descritos todos os principais atributos, métodos e
construtores do componente “CardView”. Foi desenvolvido também um pequeno
exemplo de como devemos utilizá-lo corretamente. Este tipo de widget é
facilmente encontrado em praticamente todos os novos aplicativos, assumindo
assim um papel importante de organização e distribuição de dados dentro de um
layout.
Fica a dica aí pessoal, um grande abraço e até o mês que vem!
Referências
https://developer.android.com/training/material/lists-cards.html?hl=pt-br
Nenhum comentário:
Postar um comentário