Formulir Xamarin - Beberapa tampilan dalam satu halaman [ditutup]

Dec 09 2020

Jadi saya perlu mencapai Banyak Tampilan pada halaman , Sesuatu seperti ini , tetapi sepertinya saya tidak dapat menemukan cara yang memungkinkan hal ini terjadi lintas platform. Saya dapat melihat bahwa di iOS Anda dapat mencapai ini dengan menambahkan beberapa viewcontrollers ke halaman, tetapi apakah ini dapat dicapai dalam bentuk xamarin?

Tolong beri tahu saya jika Anda memiliki pengalaman dengan ini.

Terima kasih sebelumnya!

Jawaban

LucasZhang-MSFT Dec 09 2020 at 18:21

Ada banyak solusi yang bisa diterapkan. Misalnya, Anda dapat menggunakan AbsoluteLayout untuk membuat tampilan geser.

di ContentPage

<AbsoluteLayout BackgroundColor="White" AbsoluteLayout.LayoutBounds="0,1,1,1">
        <!--  -->

        <Button Clicked="Button_Clicked" Text="Test"  AbsoluteLayout.LayoutBounds="0.5,0.3,0.2,0.05" AbsoluteLayout.LayoutFlags="All" />

        <StackLayout x:Name="bottomBar" BackgroundColor="Olive" AbsoluteLayout.LayoutBounds="0.5,1.0,1.0,0.04" AbsoluteLayout.LayoutFlags="All">
            

            <!-- put the content of swipe here -->

        </StackLayout>
    </AbsoluteLayout>

Dalam Kode di belakang

    bool isShow;
    const double layoutPropHeightMax = 0.45;
    const double layoutPropHeightMin = 0.06;
   //you could set the height here as you want

    private void Button_Clicked(object sender, EventArgs e)
    {
        if(!isShow)
        {
            //show the keyboard

            Device.BeginInvokeOnMainThread(async () =>
            {

                var height = layoutPropHeightMin;

                while (height < layoutPropHeightMax)
                {
                    await Task.Delay(1);
                    height += 0.04;

                    AbsoluteLayout.SetLayoutBounds(bottomBar, new Rectangle(0.5, 1.0,1.0, height));
                }

            });

        }

        else
        {
            // hide the keyboard
            Device.BeginInvokeOnMainThread(async () =>
            {

                var height = layoutPropHeightMax;

                while (height > layoutPropHeightMin)
                {
                    await Task.Delay(1);
                    height -= 0.04;

                    AbsoluteLayout.SetLayoutBounds(bottomBar, new Rectangle(0.5, 1.0, 1.0, height));
                }

            });

        }


        isShow = !isShow;
    }

Berikut adalah masalah serupa yang bisa Anda rujuk.