2016-06-13 13 views
5

Sto lavorando a un progetto Xamarin.forms ma ho bisogno di usare Android.Widget.AutoCompleteTextView come posso applicarlo? quando sto provando ad aggiungere AutoCompleteTextView UserNameAutoComplete;-ContentPage ottengo il seguente errore:Come utilizzare Android AutoCompleteTextView su Xamarin.Forms

Content = new StackLayout 
{     
    VerticalOptions = LayoutOptions.Center, 
    Padding = new Thickness(25), 
    Children = 
    { 
     UserNameAutoComplete, 
     passwordEditor, 
    } 
}; 

cannot convert from 'Android.Widget.AutoCompleteTextView' to 'Xamarin.Forms.View'

risposta

4

Android.Widget.AutoCompleteTextView è un View da Android.


Soluzione per PCL:

Non è possibile utilizzare la piattaforma specifica View's sulle forme Xamarin (PCL) ContentPage.

Per utilizzare la piattaforma specifica View è necessario utilizzare uno custom render. C'è un blog post da @JamesMontemagno che mostra come fare quello che ti serve.

Questo codice è esempio di bozza per favore usarlo come tale.

1 - Creare il proprio controllo Xamarin.Forms personalizzati che saranno renderered in Android come AutoCompleteTextView:

public class AutoCompleteView : View 
{ 
    // Place need properties here.  
} 

2 - Nel progetto Android aggiungere un renderer per AutoCompleteView:

[assembly: ExportRenderer(typeof(AutoCompleteView), typeof(AutoCompleteViewRenderer))] 
namespace App.Droid 
{ 
    public class AutoCompleteViewRenderer : ViewRenderer<AutoCompleteView, AutoCompleteTextView> 
    {  
     // Initialize the AutoCompleteTextView 
     protected override void OnElementChanged (ElementChangedEventArgs<AutoComplete> e) 
     { 
      base.OnElementChanged (e); 

      if (e.OldElement != null || this.Element == null) 
       return; 

      var autoComplete = new AutoCompleteTextView(Forms.Context); 
      SetNativeControl (autoComplete); 
     } 

     // Use the control here. 
     protected override void OnElementPropertyChanged (object sender, PropertyChangedEventArgs e) { 
      base.OnElementPropertyChanged (sender, e); 

      if (this.Element == null || this.Control == null) 
       return; 

      // variable this.Control is the AutoCompleteTextView, so you an manipulate it. 
     } 
    } 
} 

Soluzione per progetto condiviso:

Quando si utilizza Progetto condiviso v'è la possibilità di usare Native Embedding, come:

... 
    var textView = new TextView (Forms.Context) { Text = originalText }; 
    stackLayout.Children.Add (textView); 
    contentView.Content = textView.ToView(); 
    ... 
+0

, la prego di dare un passo per farlo o aggiungere del codice ..thanks –

+0

grazie jzeferion si ..se sono familare con l'abitudine render, potresti aggiungere un codice per la tua risposta, contiene i passaggi .. –

+0

Ho aggiunto un semplice esempio per spiegare come funziona il rendering. Per maggiori dettagli leggi il post completo del blog. – jzeferino

Problemi correlati