2017-08-15 6 views
-1

私はXFアプリケーションを構築しようとしています。ユーザーはテキストを入力して場所のタグを付けることができます(WhatsApp、Outlookアプリ、 Twitterのハッシュタグ)。私はまだXFで始まっています。誰も私を正しい方向に向けることができますか?私が見つけた最も大きなものはTagEntryViewプラグインですが、これはすばらしいですが、「場所」にタグを付ける必要があります。Xamarinフォーム:インラインタグをサポートするカスタムエントリ

例: 明日は@Parisと思っています。高度で

感謝:)

答えて

1

私が直接、第三部構成のlibを使用していない、XFで私たちの自己することにより、このようなコントロールを作成する方法についていくつかのアイデアを提供したいです。 (ちなみに、私はこの機能をサポートするサードパーティ製のlibを知りません)

私たちはいつも言っています:Custom Renderersを実装して、PCLのターゲットプラットフォームのネイティブコントロールを使用します。

ご要望に応じて、Entryをカスタマイズすることができます。

public class TagEntry : Entry 
{ 
} 

その後、Androidプラットフォーム用:

[assembly: ExportRenderer(typeof(TagEntry), typeof(TagEntryRenderer))] 

namespace YourNameSpace.Droid 
{ 
    public class TagEntryRenderer : EntryRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Entry> e) 
     { 
      base.OnElementChanged(e); 

      if (e.NewElement != null) 
       Control.AfterTextChanged += Control_AfterTextChanged; 

      if (e.OldElement != null) 
       Control.AfterTextChanged -= Control_AfterTextChanged; 
     } 

     private void Control_AfterTextChanged(object sender, AfterTextChangedEventArgs e) 
     { 
      //detect if '@' is entered. 
      if (e.Editable.LastOrDefault() == '@') 
      { 
       //show a popup list for selection. 
       //I here use a simple menu for testing, you should be able to change it to your list popup. 
       PopupMenu popup = new PopupMenu(Xamarin.Forms.Forms.Context, Control); 
       popup.MenuInflater.Inflate(Resource.Menu.testmenu, popup.Menu); 
       popup.Show(); 
       popup.MenuItemClick += (ss, ee) => 
       { 
        var item = ee.Item.TitleFormatted; 
        e.Editable.Delete(e.Editable.Length() - 1, e.Editable.Length()); 
        SpannableString spannable = new SpannableString("@" + item); 
        spannable.SetSpan(new ForegroundColorSpan(Android.Graphics.Color.Blue), 0, item.Length() + 1, SpanTypes.ExclusiveExclusive); 
        e.Editable.Append(spannable); 
        popup.Dismiss(); 
       }; 
      } 
     } 
    } 
} 

レンダリング画像:PCLでは、このような私たちのエントリを作成

enter image description here

これは、サブスクライブする考えですTextChangedネイティブコントロールのイベントです。 UWPプラットフォーム上での実装に興味がある、それは似ている、あなたは試してみることができます。 iOSプラットフォームの場合申し訳ありませんが、私はあまりにも身近ではない...

+0

ありがとう!これは完全に機能し、今後これを使用します。 – BeginnerCoder

+0

ニース - Androidカスタムレンダラーの良い例 –

関連する問題