如何在Xamarin.Android中创建向上滑动菜单

问题描述 投票:-1回答:1

如何在Xamarin.Android中创建向上滑动菜单

enter image description here

xamarin.android
1个回答
0
投票

首先,创建bottom_dialog.xml布局:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/bottom_sheet"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#000"
    android:orientation="vertical"
    android:padding="16dp"
    app:behavior_hideable="false"
    app:behavior_peekHeight="90dp"
 app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

     <TextView

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:textColor="#fff"
        android:textSize="18"
        android:textAlignment="center"
        android:drawablePadding="20dp"
        android:text="Menu" />

    <TextView
        android:id="@+id/action1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:textColor="#fff"
        android:drawablePadding="16dp"
        android:text="111111111" />

    <TextView
        android:id="@+id/action2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:textColor="#fff"
        android:drawablePadding="16dp"  
        android:text="222222222" />

    <TextView
        android:id="@+id/action3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:textColor="#fff"
        android:drawablePadding="16dp"
        android:text="333333333" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:background="#aaa"
        android:text="Start"
        android:textColor="#fff" />

</LinearLayout>

活动中

private void FabOnClick(object sender, EventArgs eventArgs)
{
   View dialogView = LayoutInflater.Inflate(Resource.Layout.bottom_dialog, null);
   BottomSheetDialog dialog = new BottomSheetDialog(this);
   dialog.SetContentView(dialogView);
   dialog.Show();
}

更新

您可以在活动中覆盖方法OnTouchEvent

    float x1 = 0;
    float x2 = 0;
    float y1 = 0;
    float y2 = 0;


    public override bool OnTouchEvent(MotionEvent e)
    {



        if (e.Action==MotionEventActions.Down)
        {
            x1 = e.GetX();
            y1 = e.GetY();
        }

        if(e.Action == MotionEventActions.Up)
        {
            x2 = e.GetX();
            y2 = e.GetY();

            if(y1-y2>50)
            {
                View dialogView = LayoutInflater.Inflate(Resource.Layout.bottom_dialog, null);
                BottomSheetDialog dialog = new BottomSheetDialog(this);
                dialog.SetContentView(dialogView);
                dialog.Show();
            }


        }

        return base.OnTouchEvent(e);
    }

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.