Ввод и вывод с помощью xamarin

#xaml #xamarin #xamarin.forms

#xaml #xamarin #xamarin.forms

Вопрос:

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

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

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

Спасибо введите описание изображения здесь

Ответ №1:

Основываясь на вашем описании, я изменил свой код, есть GIFвведите описание изображения здесь

Когда вы нажимаете 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;

        }
  

Комментарии:

1. Можете ли вы пометить это как ответ? Это поможет другим, у кого похожие проблемы

Ответ №2:

Вы добавляете, хотите ли вы достичь этого, как следующий GIF. введите описание изображения здесь

Если это так, то при использовании 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

Комментарии:

1. Lu- MSFT спасибо за ваш ответ, но я использую тот же способ. Вместо того, чтобы отображать изображение в режиме просмотра слайдов, я использую imagebutton, и когда я нажимаю любую из кнопок, появляется всплывающее окно, и слайд-шоу должно быть скрыто.

2. Lu- MSFT Привет, у меня есть еще один вопрос к тебе по этому поводу. Если я хочу, чтобы это slidemenu было вертикальным, но с левой стороны. Возможно ли это, как для top to bottom, но я хочу, чтобы это было с левой стороны.