Neste artigo vou apresentar o novo recurso CollectionView da versão 4.0 do Xamarin Forms. |
Continuando a quarta parte do artigo veremos como trabalhar com outras opções de leiautes na CollectionView.
Quando a propriedade SelectionMode estiver definida como Multiple, vários itens no CollectionView podem ser selecionados.
A
CollectionView define as seguintes propriedades que controlam o layout:
- ItemsLayout, do tipo IItemsLayout ,
especifica o layout a ser usado.
- ItemSizingStrategy, do tipo ItemSizingStrategy
, especifica a estratégia de medida do item a ser usado.
Por padrão, uma CollectionView exibirá seus itens em uma lista vertical. No
entanto, podemos usar quaisquer um dos seguintes layouts:
- Lista vertical – uma lista de coluna única que
cresce verticalmente conforme novos itens são adicionados.
- Lista horizontal – uma lista de única linha
cresce horizontalmente conforme novos itens são adicionados.
- Grade vertical – uma grade de várias colunas que
cresce verticalmente conforme novos itens são adicionados.
- Grade horizontal – uma grade de várias linhas
cresce horizontalmente conforme novos itens são adicionados.
Esses layouts podem ser especificados definindo a propriedade
ItemsLayout para a classe que deriva da classe
ItemsLayout. Essa classe define as seguintes propriedades :
- Orientation, do tipo ItemsLayoutOrientation
, especifica a direção na qual o CollectionView se expande conforme itens são
adicionados.
- SnapPointsAlignment, do tipo
SnapPointsAlignment , especifica como os pontos de alinhamento são alinhados
com os itens.
- SnapPointsType, do tipo SnapPointsType ,
especifica o comportamento de pontos de alinhamento durante a rolagem.
A enumeração ItemsLayoutOrientation define os
seguintes membros:
- Vertical - indica que o CollectionView
será expandida verticalmente conforme os itens são adicionados.
- Horizontal - indica que o CollectionView
expandirá horizontalmente conforme os itens são adicionados.
A classe ListItemsLayout herda da classe
ItemsLayout e define uma propriedade
ItemSpacing propriedade do tipo double, que
representa o espaço vazio ao redor de cada item sendo que o seu valor padarão
deve sempre ser maior que ou igual a 0.
A classe ListItemsLayout define também os membros
estáticos Vertical e Horizontal. Esses membros
podem ser usados para criar listas verticais ou horizontais, respectivamente.
Como alternativa, um objeto ListItemsLayout pode
ser criado, especificando uma enumeração
ItemsLayoutOrientation como um argumento.
O GridItemsLayout herda da classe
ItemsLayout e define as propriedades a seguir:
- VerticalItemSpacing, do tipo double, que
representa o espaço vertical vazio ao redor de cada item. O valor padrão dessa
propriedade é 0, e seu valor deve sempre ser maior que ou igual a 0.
- HorizontalItemSpacing, do tipo double, que
representa o espaço horizontal vazio ao redor de cada item. O valor padrão dessa
propriedade é 0, e seu valor deve sempre ser maior que ou igual a 0.
- Span, do tipo int, que representa o número de
colunas ou linhas a serem exibidas na grade. O valor padrão dessa propriedade é
1, e seu valor deve sempre ser maior que ou igual a 1.
Veremos a seguir cada um dos layouts permitidos lembrando que por padrão a CollectionView exibirá seus itens em um layout da lista vertical. Portanto, não é necessário definir a propriedade ItemsLayout para usar este layout.
No entanto, para fins de integridade podemos definir sua propriedade ItemsLayout com o valor de VerticalList:
<CollectionView ItemsSource="{Binding Times}"
ItemsLayout="VerticalList">
...
</CollectionView>
|
Vejamos a seguir a implementação da lista horizontal.
Implementando uma Lista Horizontal na CollectionView
Vamos usar o projeto criado na quarta parte do artigo.
No projeto criado vamos incluir uma nova view do tipo Content Page chamada HorizontalListPage.xaml e incluir o código abaixo nesta view:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="XF_CollectinViewBasico.Views.HorizontalListPage">
<ContentPage.Content>
<StackLayout Margin="15">
<CollectionView ItemsSource="{Binding Times}"
ItemsLayout="HorizontalList">
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid Padding="5">
<Grid.RowDefinitions>
<RowDefinition Height="35" />
<RowDefinition Height="35" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="70" />
<ColumnDefinition Width="120" />
</Grid.ColumnDefinitions>
<Image Grid.RowSpan="2"
Source="{Binding ImagemUrl}"
Aspect="AspectFill"
HeightRequest="60"
WidthRequest="60" />
<Label Grid.Column="1"
Text="{Binding Nome}"
FontAttributes="Bold"
LineBreakMode="TailTruncation" />
<Label Grid.Row="1"
Grid.Column="1"
Text="{Binding Pontos}"
LineBreakMode="TailTruncation"
FontAttributes="Italic"
VerticalOptions="End" />
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
|
Este código é praticamente idêntico ao usado na view CollectionViewSingleSelectionPage.xaml do projeto. A diferença é que definimos a propriedade ItemsLayout com o valor HorizontalList. Ajustamos o grid para duas colunas.
Agora no arquivo HorizontalListPage.xaml.cs vamos incluir o seguinte código:
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using XF_CollectinViewBasico.ViewModels;
namespace XF_CollectinViewBasico.Views
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class HorizontalListPage : ContentPage
{
public HorizontalListPage()
{
InitializeComponent();
BindingContext = new TimesViewModel();
}
}
}
|
Aqui estamos obtendo os itens selecionados anteriormente e atualmente.
Vamos alterar o código do arquivo App.xaml.cs para exibir a view criada neste artigo:
public App() { InitializeComponent(); MainPage = new HorizontalListPage(); } |
Executando o projeto iremos obter o seguinte resultado:
Na próxima parte do artigo veremos os layouts da grade vertical na CollectionView.
Pegue o código do projeto compartilhado aqui : XF_CollectionView_5.zip (sem as referências)
"Por que estás abatida, ó minha alma, e por que te
perturbas dentro de mim? Espera em Deus, pois ainda o louvarei, o qual é a
salvação da minha face, e o meu Deus."
Salmos 42:11
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
Xamarim - Desenvolvimento Multiplataforma com C# ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Criando sua primeira ... - Macoratti.net
Xamarin.Forms - Olá Mundo - Anatomia da aplicação - Macoratti.net
https://developer.xamarin.com/api/type/Android.Widget.ListView/
https://developer.xamarin.com/api/property/Android.Widget.ListView.Adapter/
https://developer.xamarin.com/guides/xamarin-forms/user-interface/animation/