Uso di Xamarin.Android Designer

Questo articolo è una procedura dettagliata di Xamarin.Android Designer. Illustra come creare un'interfaccia utente per un'app browser a colori piccola; questa interfaccia utente viene creata interamente in Progettazione.

Panoramica

Le interfacce utente Android possono essere create in modo dichiarativo usando file XML o a livello di codice scrivendo codice. Xamarin.Android Designer consente agli sviluppatori di creare e modificare layout dichiarativi visivamente, senza richiedere la modifica manuale dei file XML. Progettazione fornisce anche commenti e suggerimenti in tempo reale che consentono allo sviluppatore di valutare le modifiche dell'interfaccia utente senza dover ridistribuire l'applicazione in un dispositivo o in un emulatore. Queste funzionalità della finestra di progettazione possono velocizzare notevolmente lo sviluppo dell'interfaccia utente Android. Questo articolo illustra come usare progettazione Xamarin.Android per creare visivamente un'interfaccia utente.

Suggerimento

Le versioni più recenti di Visual Studio supportano l'apertura dei file con estensione xml all'interno di Android Designer.

I file con estensione axml e xml sono entrambi supportati in Android Designer.

scenario

Questa procedura dettagliata descrive come usare Android Designer per creare un'interfaccia utente per un'app del browser a colori di esempio. L'app del browser a colori presenta un elenco di colori, i relativi nomi e i relativi valori RGB. Si apprenderà come aggiungere widget a Design Surface e come disporre visivamente questi widget. Successivamente, si apprenderà come modificare i widget in modo interattivo nell'area di progettazione o usando il riquadro Proprietà della finestra di progettazione. Infine, vedrai l'aspetto della progettazione quando l'app viene eseguita in un dispositivo o in un emulatore.

Creazione di un nuovo progetto

Il primo passaggio consiste nel creare un nuovo progetto Xamarin.Android. Avviare Visual Studio, fare clic su Nuovo progetto e scegliere il modello Visual C# > Android > Android App (Xamarin). Denominare la nuova app DesignerWalkthrough e fare clic su OK.

Android blank app

Nella finestra di dialogo Nuova app Android scegliere App vuota e fare clic su OK:

Selecting the Android Blank App template

Aggiunta di un layout

Il passaggio successivo consiste nel creare un LinearLayout che conterrà gli elementi dell'interfaccia utente. Fare clic con il pulsante destro del mouse su Risorse/layout nella Esplora soluzioni e selezionare Aggiungi > nuovo elemento. Nella finestra di dialogo Aggiungi nuovo elemento selezionare Layout Android. Assegnare al file il nome list_item e fare clic su Aggiungi:

New layout

Il nuovo layout list_item viene visualizzato nella finestra di progettazione. Si noti che vengono visualizzati due riquadri: l'area di progettazione per il list_item è visibile nel riquadro sinistro mentre l'origine XML viene visualizzata nel riquadro destro. È possibile scambiare le posizioni dei riquadri Area di progettazione e Origine facendo clic sull'icona Scambia riquadri che si trovano tra i due riquadri:

Designer view

Dal menu Visualizza fare clic su Altre > finestre Struttura documento per aprire la struttura documento. La struttura documento mostra che il layout contiene attualmente un singolo widget LinearLayout :

Document outline

Il passaggio successivo consiste nel creare l'interfaccia utente per l'app del browser a colori all'interno di questo LinearLayoutoggetto .

Creazione dell'interfaccia utente dell'elemento elenco

Se il riquadro Casella degli strumenti non viene visualizzato, fare clic sulla scheda Casella degli strumenti a sinistra. Nella casella degli strumenti scorrere verso il basso fino alla sezione Immagini e supporti e scorrere verso il basso fino a individuare un elemento ImageView:

Locate ImageView

In alternativa, è possibile immettere ImageView nella barra di ricerca per individuare :ImageView

ImageView search

Trascinarlo ImageView nell'area di progettazione ( ImageView verrà usato per visualizzare un campione di colore nell'app del browser colori):

ImageView on canvas

Trascinare quindi un LinearLayout (Vertical) widget dalla casella degli strumenti nella finestra di progettazione. Si noti che una struttura blu indica i limiti dell'oggetto aggiunto LinearLayout. La struttura documento mostra che è un elemento figlio di LinearLayout, che si trova in imageView1 (ImageView):

Blue outline

Quando si seleziona ImageView in Progettazione, il contorno blu si sposta per racchiudere .ImageView Inoltre, la selezione passa a imageView1 (ImageView) nella struttura documento:

Select ImageView

Trascinare quindi un Text (Large) widget dalla casella degli strumenti nell'oggetto appena aggiunto LinearLayout. Si noti che progettazione usa evidenziazioni verdi per indicare dove verrà inserito il nuovo widget:

Green highlights

Aggiungere quindi un Text (Small) widget sotto il Text (Large) widget:

Add small text widget

A questo punto, l'area di progettazione dovrebbe essere simile alla schermata seguente:

Screenshot shows the Designer surface with Toolbox, Document Outline, and layout area with small text selected.

Se i due textView widget non sono all'interno linearLayout1di , è possibile trascinarli in nella Struttura documento e posizionarli linearLayout1 in modo che vengano visualizzati come illustrato nello screenshot precedente (rientrato in linearLayout1).

Disposizione dell'interfaccia utente

Il passaggio successivo consiste nel modificare l'interfaccia utente per visualizzare l'oggetto ImageView a sinistra, con i due TextView widget impilati a destra di ImageView.

  1. Selezionare il ImageView.

  2. Nella Finestra Proprietà immettere larghezza nella casella di ricerca e individuare Larghezza layout.

  3. Modificare l'impostazione Larghezza layout in wrap_content:

Set wrap content

Un altro modo per modificare l'impostazione Width consiste nel fare clic sul triangolo sul lato destro del widget per attivare o disattivare l'impostazione della larghezza su wrap_content:

Drag to set width

Facendo di nuovo clic sul triangolo, viene restituita l'impostazione Width su match_parent. Passare quindi al riquadro Struttura documento e selezionare la radice LinearLayout:

Select root LinearLayout

Con la radice LinearLayout selezionata, tornare al riquadro Proprietà , immettere l'orientamento nella casella di ricerca e individuare l'impostazione Orientamento . Modificare l'orientamento in horizontal:

Select horizontal orientation

A questo punto, l'area di progettazione dovrebbe essere simile allo screenshot seguente. Si noti che i TextView widget sono stati spostati a destra di ImageView:

Screenshot shows the Designer surface with Toolbox, Document Outline, and layout area.

Modifica della spaziatura

Il passaggio successivo consiste nel modificare le impostazioni di spaziatura interna e margine nell'interfaccia utente per fornire maggiore spazio tra i widget. Selezionare l'oggetto ImageView nell'area progettazione. Nel riquadro Proprietà immettere min nella casella di ricerca. Immettere 70dp per Min Height (Altezza minima) e 50dp per Min Width (Larghezza minima):

Set height and width

Nel riquadro Proprietà immettere padding nella casella di ricerca e immettere 10dp per Riempimento. Queste minHeightimpostazioni , minWidth e padding aggiungono spaziatura interna intorno a tutti i lati del ImageView e allungato verticalmente. Si noti che il codice XML di layout cambia man mano che si immettono questi valori:

Set padding

Le impostazioni di riempimento inferiore, sinistro, destro e superiore possono essere impostate in modo indipendente immettendo i valori rispettivamente nei campi Padding Bottom, Padding Left, Padding Right e Padding Top . Ad esempio, impostare il campo 5dp Padding Left su e i campi Padding Bottom, Padding Right e Padding Top su 10dp:

Custom padding settings

Modificare quindi la posizione del LinearLayout widget che contiene i due TextView widget. Nella struttura documento selezionare linearLayout1. Nella finestra Proprietà immettere margin nella casella di ricerca. Impostare Layout Margin Bottom, Layout Margin Left e Layout Margin Top su 5dp. Impostare Layout Margin Right su 0dp:

Set margins

Rimozione dell'immagine predefinita

ImageView Poiché viene usato per visualizzare i colori (anziché le immagini), il passaggio successivo consiste nel rimuovere l'origine dell'immagine predefinita aggiunta dal modello.

  1. Selezionare nell'area ImageView di progettazione.

  2. In Proprietà immettere src nella casella di ricerca.

  3. Fare clic sul piccolo quadrato a destra dell'impostazione della proprietà Src e selezionare Reimposta:

Clear the ImageView src setting

In questo modo viene rimosso android:src="@android:drawable/ic_menu_gallery" dal codice XML di origine per tale ImageViewoggetto .

Aggiunta di un contenitore ListView

Ora che il layout list_item è definito, il passaggio successivo consiste nell'aggiungere un oggetto ListView al layout principale. Questo ListView conterrà un elenco di list_item.

Nella Esplora soluzioni aprire Resources/layout/activity_main.axml. In ToolBox individuare il ListView widget e trascinarlo nell'area di progettazione. L'oggetto ListView in Progettazione sarà vuoto, ad eccezione delle linee blu che ne delineano il bordo quando è selezionato. È possibile visualizzare la struttura documento per verificare che ListViewsia stato aggiunto correttamente:

New ListView

Per impostazione predefinita, all'oggetto ListView viene assegnato un Id valore .@+id/listView1 Mentre listView1 è ancora selezionato in Struttura documento, aprire il riquadro Proprietà , fare clic su Disponi per e selezionare Categoria. Aprire Main, individuare la proprietà Id e modificarne il valore in @+id/myListView:

Rename id to myListView

A questo punto, l'interfaccia utente è pronta per l'uso.

Esecuzione dell'applicazione

Aprire MainActivity.cs e sostituirlo con il codice seguente:

using Android.App;
using Android.Widget;
using Android.Views;
using Android.OS;
using Android.Support.V7.App;
using System.Collections.Generic;

namespace DesignerWalkthrough
{
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        List<ColorItem> colorItems = new List<ColorItem>();
        ListView listView;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);
            listView = FindViewById<ListView>(Resource.Id.myListView);

            colorItems.Add(new ColorItem()
            {
                Color = Android.Graphics.Color.DarkRed,
                ColorName = "Dark Red",
                Code = "8B0000"
            });
            colorItems.Add(new ColorItem()
            {
                Color = Android.Graphics.Color.SlateBlue,
                ColorName = "Slate Blue",
                Code = "6A5ACD"
            });
            colorItems.Add(new ColorItem()
            {
                Color = Android.Graphics.Color.ForestGreen,
                ColorName = "Forest Green",
                Code = "228B22"
            });

            listView.Adapter = new ColorAdapter(this, colorItems);
        }
    }

    public class ColorAdapter : BaseAdapter<ColorItem>
    {
        List<ColorItem> items;
        Activity context;
        public ColorAdapter(Activity context, List<ColorItem> items)
            : base()
        {
            this.context = context;
            this.items = items;
        }
        public override long GetItemId(int position)
        {
            return position;
        }
        public override ColorItem this[int position]
        {
            get { return items[position]; }
        }
        public override int Count
        {
            get { return items.Count; }
        }
        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            var item = items[position];

            View view = convertView;
            if (view == null) // no view to re-use, create new
                view = context.LayoutInflater.Inflate(Resource.Layout.list_item, null);
            view.FindViewById<TextView>(Resource.Id.textView1).Text = item.ColorName;
            view.FindViewById<TextView>(Resource.Id.textView2).Text = item.Code;
            view.FindViewById<ImageView>(Resource.Id.imageView1).SetBackgroundColor(item.Color);

            return view;
        }
    }

    public class ColorItem
    {
        public string ColorName { get; set; }
        public string Code { get; set; }
        public Android.Graphics.Color Color { get; set; }
    }
}

Questo codice usa un adattatore personalizzato ListView per caricare informazioni sul colore e per visualizzare questi dati nell'interfaccia utente appena creata. Per mantenere breve questo esempio, le informazioni sul colore sono hardcoded in un elenco, ma l'adattatore potrebbe essere modificato per estrarre informazioni sul colore da un'origine dati o per calcolarlo in tempo reale. Per altre informazioni sugli ListView adapter, vedere ListView.

Compilare ed eseguire l'applicazione. Lo screenshot seguente è un esempio di come viene visualizzata l'app durante l'esecuzione in un dispositivo:

Final screenshot

Riepilogo

Questo articolo illustra il processo di utilizzo di Progettazione Xamarin.Android in Visual Studio per creare un'interfaccia utente per un'app di base. Ha illustrato come creare l'interfaccia per un singolo elemento in un elenco ed è stato illustrato come aggiungere widget e inserirli visivamente. Ha anche spiegato come assegnare risorse e quindi impostare varie proprietà su tali widget.