Personalizar a aparência da interface do usuário com base na plataforma e no idioma do dispositivo
Os aplicativos .NET Multi-Platform App UI (.NET MAUI) podem ter sua interface do usuário personalizada para plataformas e dispositivos específicos. Isso permite que seu aplicativo:
- Faça o uso mais eficaz do espaço. Se você projetar um aplicativo para ter uma boa aparência em um dispositivo móvel, o aplicativo ainda poderá ser usado em um dispositivo desktop, mas provavelmente haverá algum espaço desperdiçado. Você pode personalizar seu aplicativo para exibir mais conteúdo quando a tela estiver acima de um determinado tamanho. Por exemplo, um aplicativo de compras pode exibir um item de cada vez em um dispositivo móvel, mas pode mostrar vários itens em um dispositivo desktop. Além disso, ao colocar mais conteúdo na tela, você pode reduzir a quantidade de navegação que os usuários precisam executar.
- Aproveite os recursos do dispositivo. É mais provável que certos dispositivos tenham determinadas capacidades. Por exemplo, os dispositivos móveis são mais propensos a ter um sensor de localização e uma câmera, enquanto os dispositivos desktop podem não ter nenhum dos dois. Seu aplicativo pode detectar quais recursos estão disponíveis e habilitar controles que os usam.
- Otimize a entrada. Você pode reorganizar os elementos da interface do usuário para otimizar para tipos de entrada específicos. Por exemplo, se você colocar elementos de navegação na parte inferior do aplicativo, eles serão mais fáceis de serem acessados pelos usuários móveis. Mas os usuários de desktop geralmente esperam ver elementos de navegação na parte superior do aplicativo.
Quando você otimiza a interface do usuário do seu aplicativo para plataformas e expressões idiomáticas de dispositivo específicas, você está criando uma interface do usuário responsiva. As principais abordagens para criar uma interface do usuário responsiva no .NET MAUI envolvem o uso da extensão de marcação e da OnPlatform
OnIdiom
extensão de marcação.
Observação
Há uma categoria de gatilhos, conhecidos como gatilhos de estado, que podem ser usados para personalizar a aparência da interface do usuário em cenários específicos, como quando a orientação de um dispositivo muda. Para obter mais informações, consulte Gatilho de estado.
Personalizar a aparência da interface do usuário com base na plataforma
A extensão de marcação OnPlatform
permite que você personalize a aparência da interface do usuário por plataforma. Ele fornece a mesma funcionalidade que as OnPlatform<T> classes e On , mas com uma representação mais concisa.
A OnPlatform
extensão de marcação é suportada OnPlatformExtension pela classe, que define as seguintes propriedades:
Default
, do tipoobject
, que você define como um valor padrão a ser aplicado às propriedades que representam plataformas.Android
, do tipoobject
, que você define como um valor a ser aplicado no Android.iOS
, do tipoobject
, que você define como um valor a ser aplicado no iOS.MacCatalyst
, do tipoobject
, que você define como um valor a ser aplicado no Mac Catalyst.Tizen
, do tipoobject
, que você define como um valor a ser aplicado na plataforma Tizen.WinUI
, do tipoobject
, que você define como um valor a ser aplicado no WinUI.Converter
, do tipo IValueConverter, que pode ser definido como uma IValueConverter implementação.ConverterParameter
, do tipoobject
, que pode ser definido como um valor a ser passado para a IValueConverter implementação.
Observação
O analisador XAML permite que a OnPlatformExtension classe seja abreviada como OnPlatform
.
A Default
propriedade é a propriedade content de OnPlatformExtension. Portanto, para expressões de marcação XAML expressas com chaves curvas, você pode eliminar a Default=
parte da expressão se for o primeiro argumento. Se a propriedade não estiver definida, ela assumirá como padrão o valor da BindableProperty.DefaultValue
propriedade, desde que a extensão de marcação esteja direcionada a Default
um BindablePropertyarquivo .
Importante
O analisador XAML espera que valores do tipo correto sejam fornecidos às propriedades que consomem a OnPlatform
extensão de marcação. Se a conversão de tipo for necessária, a extensão de OnPlatform
marcação tentará executá-la usando os conversores padrão fornecidos pelo .NET MAUI. No entanto, existem algumas conversões de tipo que não podem ser executadas pelos conversores padrão e, nesses casos, a Converter
propriedade deve ser definida como uma IValueConverter implementação.
A página OnPlatform Demo mostra como usar a OnPlatform
extensão de marcação:
<BoxView Color="{OnPlatform Yellow, iOS=Red, Android=Green}"
WidthRequest="{OnPlatform 250, iOS=200, Android=300}"
HeightRequest="{OnPlatform 250, iOS=200, Android=300}"
HorizontalOptions="Center" />
Neste exemplo, todas as três OnPlatform
expressões usam a versão abreviada do nome da OnPlatformExtension classe. As três OnPlatform
extensões de marcação definem o xref:Microsoft.Maui.Graphics.Color
, WidthRequeste as propriedades do BoxView para valores diferentes no iOS e HeightRequest Android. As extensões de marcação também fornecem valores padrão para essas propriedades nas plataformas que não são especificadas, enquanto eliminam a Default=
parte da expressão.
Personalizar a aparência da interface do usuário com base no idioma do dispositivo
A OnIdiom
extensão de marcação permite personalizar a aparência da interface do usuário com base no idioma do dispositivo em que o aplicativo está sendo executado. Ele é suportado OnIdiomExtension pela classe, que define as seguintes propriedades:
Default
, do tipoobject
, que você define como um valor padrão a ser aplicado às propriedades que representam expressões idiomáticas de dispositivo.Phone
, do tipoobject
, que você define como um valor a ser aplicado em telefones.Tablet
, do tipoobject
, que você define como um valor a ser aplicado em tablets.Desktop
, do tipoobject
, que você define como um valor a ser aplicado em plataformas de desktop.TV
, do tipoobject
, que você define como um valor a ser aplicado em plataformas de TV.Watch
, do tipoobject
, que você define como um valor a ser aplicado nas plataformas Watch.Converter
, do tipo IValueConverter, que pode ser definido como uma IValueConverter implementação.ConverterParameter
, do tipoobject
, que pode ser definido como um valor a ser passado para a IValueConverter implementação.
Observação
O analisador XAML permite que a OnIdiomExtension classe seja abreviada como OnIdiom
.
A Default
propriedade é a propriedade content de OnIdiomExtension. Portanto, para expressões de marcação XAML expressas com chaves curvas, você pode eliminar a Default=
parte da expressão se for o primeiro argumento.
Importante
O analisador XAML espera que valores do tipo correto sejam fornecidos às propriedades que consomem a OnIdiom
extensão de marcação. Se a conversão de tipo for necessária, a extensão de OnIdiom
marcação tentará executá-la usando os conversores padrão fornecidos pelo .NET MAUI. No entanto, existem algumas conversões de tipo que não podem ser executadas pelos conversores padrão e, nesses casos, a Converter
propriedade deve ser definida como uma IValueConverter implementação.
O exemplo XAML a seguir mostra como usar a extensão de OnIdiom
marcação:
<BoxView Color="{OnIdiom Yellow, Phone=Red, Tablet=Green, Desktop=Blue}"
WidthRequest="{OnIdiom 100, Phone=200, Tablet=300, Desktop=400}"
HeightRequest="{OnIdiom 100, Phone=200, Tablet=300, Desktop=400}"
HorizontalOptions="Center" />
Neste exemplo, todas as três OnIdiom
expressões usam a versão abreviada do nome da OnIdiomExtension classe. As três OnIdiom
extensões de marcação definem o Color
, WidthRequeste as propriedades do para valores diferentes nos idiomas do BoxView telefone, tablet e HeightRequest desktop. As extensões de marcação também fornecem valores padrão para essas propriedades nos idiomas que não são especificados, enquanto eliminam a Default=
parte da expressão.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários