Xamarin.formsでフロートアクションボタンをPCLプロジェクトフォームコード共有で使用するにはどうすればよいですか?

ブルーノ・ペレス

Xamarin、Xamarin.Forms、C#プラットフォームは初めてです。

私はこれらのテクノロジーでいくつかの実験を行っており、コード共有のためにPCLプロジェクトでXamarin.Formsのプラットフォーム固有のUIコンポーネントを使用する方法を探しています。

Webで検索すると、FABボタンの実装がいくつか見つかりました()が、これらの実装は非推奨または廃止されています。

ネイティブコントロールをXamarin.Forms埋め込むことが可能であることは知っていますが、このアプローチではSAPプロジェクトを使用しています...

私の質問は次のとおりです。コード共有用のPCLプロジェクトでXamarin.FormsソリューションにFABボタン(または他のプラットフォーム固有のUIコントロール)を使用する方法はありますか?はいの場合、他のプラットフォームでの動作はどうなりますか?iOSUIにFABボタンが表示されないことを願っています。

助けてくれてありがとう。

グレースフェン

ここではサードパーティのライブラリを提案しませんが、通常はカスタムレンダラーを使用してPCLからターゲットプラットフォームのネイティブコントロールを使用できます

FloatingActionButton Androidプラットフォームの、ビューレンダラを実装しようとすることができます。

たとえば、PCLでMyFloatButtonという名前のクラスを作成します

public class MyFloatButton : View
{
}

次に、AndroidプロジェクトでMyFloatButtonRenderer、たとえば次のような名前の別のクラスを作成します

[assembly: ExportRenderer(typeof(MyFloatButton), typeof(MyFloatButtonRenderer))]

namespace NameSpace.Droid
{
    public class MyFloatButtonRenderer : Xamarin.Forms.Platform.Android.ViewRenderer<MyFloatButton, FloatingActionButton>
    {
        private FloatingActionButton fab;

        protected override void OnElementChanged(ElementChangedEventArgs<MyFloatButton> e)
        {
            base.OnElementChanged(e);

            if (Control == null)
            {
                fab = new FloatingActionButton(Xamarin.Forms.Forms.Context);
                fab.LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent);
                fab.Clickable = true;
                fab.SetImageDrawable(Resources.GetDrawable(Resource.Drawable.icon));
                SetNativeControl(fab);
            }

            if (e.NewElement != null)
            {
                fab.Click += Fab_Click;
            }

            if (e.OldElement != null)
            {
                fab.Click -= Fab_Click;
            }
        }

        private void Fab_Click(object sender, EventArgs e)
        {
        }
    }
}

iOSUIにFABボタンが表示されないことを願っています。

このコントロールをAndroidプラットフォームでのみ表示する場合は、たとえば、ページのPCLのxamlに次のようにコーディングできます。

<OnPlatform x:TypeArguments="View">
    <OnPlatform.Android>
        <local:MyFloatButton WidthRequest="50" HeightRequest="50" HorizontalOptions="Center" />
    </OnPlatform.Android>
    <OnPlatform.iOS>
        <!--use other view here-->
    </OnPlatform.iOS>
</OnPlatform>

または、このコントロールをコードビハインドに追加することを確認してください。このブログを確認してください:Xamarin.Formsへのネイティブコントロールの埋め込み

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ