Скольжение внутрь и наружу с помощью xamarin - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь реализовать этот вид дизайна, как показано на рис. На моей странице, как я могу добиться этого в Xamarin.forms в основном в общем проекте. Как я пытаюсь уменьшить сложность, делая в конкретной платформе.

Я пытался использовать это даже https://github.com/XAM-Consulting/SlideOverKit. Но проблема в том, что я не могу скользить в меню, когда оно открыто (т.е. после прикосновения к странице, я хочу, чтобы меню скрылось), но этого не происходит. Нам нужно вручную перетащить его, чтобы закрыть.

Поэтому, пожалуйста, дайте мне знать, как этого добиться.

Спасибо enter image description here

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Исходя из вашего описания, я изменил свой код, есть GIF enter image description here

Когда вы нажимаете ImageButton, вы должны вызвать этот метод this.HideMenu();

код QuickInnerMenuPage

  public QuickInnerMenuPage()
    {
        Content = new StackLayout
        {
            VerticalOptions = LayoutOptions.Center,
            HorizontalOptions = LayoutOptions.Center,
            Children = {
              new Label(){Text="1222"}
            }
        };

        this.SlideMenu = new QuickInnerMenuView(MenuOrientation.RightToLeft);

        QuickInnerMenuView.ib.Clicked += (o, e) =>
        {

            this.HideMenu();
        };


    }
}

есть код QuickInnerMenuView

    public class QuickInnerMenuView : SlideMenuView
{
    public static ImageButton ib;
    public QuickInnerMenuView (MenuOrientation orientation)
    {
         ib = new ImageButton
        {
            Source = "Happy.png",
            WidthRequest = 25,
            HeightRequest = 25,
        };

        var mainLayout = new StackLayout {
            Spacing = 15,
            Children = {
                ib,
                new ImageButton {
                    Source = "Home.png",
                    WidthRequest = 25,
                    HeightRequest = 25,
                },
                new ImageButton {
                    Source = "MessageFilled.png",
                    WidthRequest = 25,
                    HeightRequest = 25,
                },
                new ImageButton {
                    Source = "Settings.png",
                    WidthRequest = 25,
                    HeightRequest = 25,
                },
            }
        };
        // In this case the IsFullScreen must set false
        this.IsFullScreen = false;
        this.BackgroundViewColor = Color.Transparent;

        // You must set BackgroundColor, 
        // and you cannot put another layout with background color cover the whole View
        // otherwise, it cannot be dragged on Android
        this.BackgroundColor = Color.FromHex ("#C82630");
        this.MenuOrientations = orientation;
        if (orientation == MenuOrientation.BottomToTop) {
            mainLayout.Orientation = StackOrientation.Vertical;
            mainLayout.Children.Insert (0, new Image {
                Source = "DoubleUp.png",
                WidthRequest = 25,
                HeightRequest = 25,
            });
            mainLayout.Padding = new Thickness (0, 5);
            // In this case, you must set both WidthRequest and HeightRequest.
            this.WidthRequest = 50; 
            this.HeightRequest = 200;

            // A little bigger then DoubleUp.png image size, used for user drag it.
            this.DraggerButtonHeight = 30;

            // In this menu direction you must set LeftMargin.
            this.LeftMargin = 100;

        }
0 голосов
/ 15 марта 2019

Вы хотите добавить, чтобы добиться этого, как после GIF.enter image description here

Если это так, когда вы использовали SlideMenu, вы должны создать новое представление, которое наследует от MenuContainerPage, как следующий код. Примечание: MenuContainerPage взято из SlideOverKit

    public class QuickInnerMenuPage: MenuContainerPage
{
    public QuickInnerMenuPage()
    {
        Content = new StackLayout
        {
            VerticalOptions = LayoutOptions.Center,
            HorizontalOptions = LayoutOptions.Center,
            Children = {
              new Label(){Text="1222"}
            }
        };

        this.SlideMenu = new QuickInnerMenuView(MenuOrientation.RightToLeft);
    }
}

Вот мое демо. Вы можете сослаться на него.https://github.com/851265601/SlideOverKitDemo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...