Xamarin.Forms Oggetto visivo materiale
Material Design è un sistema di progettazione opinionato creato da Google, che prescrive le dimensioni, il colore, la spaziatura e altri aspetti del modo in cui le visualizzazioni e i layout devono apparire e comportarsi.
Xamarin.Forms L'oggetto visivo materiale può essere usato per applicare regole di progettazione materiale alle Xamarin.Forms applicazioni, creando applicazioni che sembrano in gran parte identiche in iOS e Android. Quando l'oggetto visivo materiale è abilitato, le visualizzazioni supportate adottano la stessa progettazione multipiattaforma, creando un aspetto unificato.
Il processo per abilitare Xamarin.Forms l'oggetto visivo materiale nell'applicazione è:
- Aggiungere . Xamarin.Forms Pacchetto NuGet Visual.Material nei progetti della piattaforma iOS e Android. Questo pacchetto NuGet offre renderer di Material Design ottimizzati in iOS e Android. In iOS il pacchetto fornisce la dipendenza transitiva a Xamarin.iOS.MaterialComponents, che è un binding C# ai componenti materiali di Google per iOS. In Android il pacchetto fornisce destinazioni di compilazione per assicurarsi che TargetFramework sia configurato correttamente.
- Inizializzare l'oggetto visivo materiale in ogni progetto di piattaforma. Per altre informazioni, vedere Inizializzare l'oggetto visivo materiale.
- Creare controlli oggetto visivo materiale impostando la
Visual
proprietà suMaterial
in qualsiasi pagina che deve adottare le regole di progettazione del materiale. Per altre informazioni, vedere Utilizzare renderer materiali. - [facoltativo] Personalizzare i controlli Material. Per altre informazioni, vedere Personalizzare i controlli materiali.
Importante
In Android, Material Visual richiede una versione minima di 5.0 (API 21) o successiva e un Oggetto TargetFramework versione 9.0 (API 28). Inoltre, il progetto di piattaforma richiede librerie di supporto Android 28.0.0 o versione successiva e il relativo tema deve ereditare da un tema Componenti materiali o continuare a ereditare da un tema AppCompat. Per altre informazioni, vedere Introduzione ai componenti materiali per Android.
L'oggetto visivo materiale supporta attualmente i controlli seguenti:
ActivityIndicator
Button
CheckBox
DatePicker
Editor
Entry
Frame
Picker
ProgressBar
Slider
Stepper
TimePicker
I controlli materiali sono realizzati dai renderer materiali, che applicano le regole material design. Funzionalmente, i renderer materiali non sono diversi dai renderer predefiniti. Per altre informazioni, vedere Personalizzare l'oggetto visivo materiale.
Inizializzare l'oggetto visivo materiale
Dopo l'installazione di Xamarin.Forms. Pacchetto NuGet Visual.Material , i renderer materiali devono essere inizializzati in ogni progetto di piattaforma.
In iOS, questo dovrebbe verificarsi in AppDelegate.cs richiamando il Xamarin.Forms.FormsMaterial.Init
metodo dopo il metodo :Xamarin.Forms.Forms.Init
global::Xamarin.Forms.Forms.Init();
global::Xamarin.Forms.FormsMaterial.Init();
In Android, questo dovrebbe verificarsi in MainActivity.cs richiamando il Xamarin.Forms.FormsMaterial.Init
metodo dopo il Xamarin.Forms.Forms.Init
metodo :
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
global::Xamarin.Forms.FormsMaterial.Init(this, savedInstanceState);
Applica oggetto visivo materiale
Le applicazioni possono abilitare l'oggetto visivo materiale impostando la VisualElement.Visual
proprietà in una pagina, un layout o una vista su Material
:
<ContentPage Visual="Material"
...>
...
</ContentPage>
Il codice C# equivalente è il seguente:
ContentPage contentPage = new ContentPage();
contentPage.Visual = VisualMarker.Material;
L'impostazione della proprietà su Material
indirizza l'applicazione VisualElement.Visual
all'uso dei renderer di oggetti visivi materiali anziché dei renderer predefiniti. La Visual
proprietà può essere impostata su qualsiasi tipo che implementa IVisual
, con la VisualMarker
classe che fornisce le proprietà seguenti IVisual
:
Default
: indica che il rendering della vista deve essere eseguito usando il renderer predefinito.MatchParent
: indica che la vista deve usare lo stesso renderer dell'elemento padre diretto.Material
: indica che il rendering della vista deve essere eseguito usando un renderer materiale.
Importante
La Visual
proprietà viene definita nella VisualElement
classe , con viste che ereditano il valore della Visual
proprietà dai relativi elementi padre. Pertanto, l'impostazione della Visual
proprietà su un ContentPage
garantisce che tutte le visualizzazioni supportate nella pagina usino tale oggetto Visivo. Inoltre, è possibile eseguire l'override della Visual
proprietà in una visualizzazione.
Gli screenshot seguenti mostrano un'interfaccia utente sottoposta a rendering usando i renderer predefiniti:
Gli screenshot seguenti mostrano la stessa interfaccia utente di cui è stato eseguito il rendering usando i renderer material:
Le principali differenze visibili tra i renderer predefiniti e i renderer materiali, illustrati di seguito, sono che i renderer materiali in maiuscolo Button
il testo e arrotondano gli angoli dei Frame
bordi. Tuttavia, i renderer materiali usano controlli nativi e pertanto potrebbero esserci ancora differenze di interfaccia utente tra le piattaforme per aree quali tipi di carattere, ombreggiature, colori e elevazione.
Nota
I componenti material Design sono strettamente conformi alle linee guida di Google. Di conseguenza, i renderer material design sono distorti verso il ridimensionamento e il comportamento. Quando è necessario un maggiore controllo degli stili o del comportamento, è comunque possibile creare il proprio effetto, comportamento o renderer personalizzato per ottenere i dettagli necessari.
Personalizzare l'oggetto visivo materiale
Il pacchetto NuGet Material Visual è una raccolta di renderer che realizzano i Xamarin.Forms controlli. La personalizzazione dei controlli oggetti visivi materiali è identica alla personalizzazione dei controlli predefiniti.
Gli effetti sono la tecnica consigliata quando l'obiettivo è personalizzare un controllo esistente. Se esiste un renderer visivo materiale, è meno necessario personalizzare il controllo con un effetto rispetto a quello di sottoclassare il renderer. Per altre informazioni sugli effetti, vedere Xamarin.Forms effetti.
I renderer personalizzati sono la tecnica consigliata quando non esiste un renderer materiale. Le classi renderer seguenti sono incluse in Material Visual:
MaterialButtonRenderer
MaterialCheckBoxRenderer
MaterialEntryRenderer
MaterialFrameRenderer
MaterialProgressBarRenderer
MaterialDatePickerRenderer
MaterialTimePickerRenderer
MaterialPickerRenderer
MaterialActivityIndicatorRenderer
MaterialEditorRenderer
MaterialSliderRenderer
MaterialStepperRenderer
La sottoclassazione di un renderer materiale è quasi identica ai renderer non materiali. Tuttavia, quando si esporta un renderer che sottoclassa un renderer material, è necessario fornire un terzo argomento all'attributo ExportRenderer
che specifica il VisualMarker.MaterialVisual
tipo:
using Xamarin.Forms.Material.Android;
[assembly: ExportRenderer(typeof(ProgressBar), typeof(CustomMaterialProgressBarRenderer), new[] { typeof(VisualMarker.MaterialVisual) })]
namespace MyApp.Android
{
public class CustomMaterialProgressBarRenderer : MaterialProgressBarRenderer
{
//...
}
}
In questo esempio, specifica ExportRendererAttribute
che la CustomMaterialProgressBarRenderer
classe verrà utilizzata per eseguire il rendering della ProgressBar
vista, con il IVisual
tipo registrato come terzo argomento.
Nota
Un renderer che specifica un IVisual
tipo, come parte del relativo ExportRendererAttribute
, verrà usato per eseguire il rendering esplicito nelle visualizzazioni, anziché per il renderer predefinito. Al momento della selezione del renderer, la Visual
proprietà della visualizzazione viene controllata e inclusa nel processo di selezione del renderer.
Per altre informazioni sui renderer personalizzati, vedere Renderer personalizzati.