• xamarin.android 实现 Activity 底部弹出对话框菜单


    Resources/drawable 下新增如下文件:

    push_bottom_in.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <!-- 上下滑入式 -->
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
    
      <translate
          android:duration="200"
          android:fromYDelta="100%p"
          android:toYDelta="0"
         />
    </set>

    push_buttom_out.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <!-- 上下滑出式 -->
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
      <translate
          android:duration="200"
          android:fromYDelta="0"
          android:toYDelta="98%p" />
    </set>

    在 values/Styles.xml 新增如下样式

      <style name="AnimBottom" parent="@android:style/Animation">
        <item name="android:windowEnterAnimation">@drawable/push_bottom_in</item>
        <item name="android:windowExitAnimation">@drawable/push_buttom_out</item>
      </style>
    
      <style name="MyDialogStyleBottom" parent="android:Theme.Holo.DialogWhenLarge">
        <item name="android:windowAnimationStyle">@style/AnimBottom</item>
        <item name="android:windowFrame">@null</item>
        <!-- 边框 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 是否浮现在activity之上 -->
        <item name="android:windowIsTranslucent">true</item>
        <!-- 半透明 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 无标题 -->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 背景透明 -->
        <item name="android:backgroundDimEnabled">true</item>
        <!-- 模糊 -->
      </style>

    新增如下文件 Resources/layout/LoginMenuPopupWindow.axml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:orientation="vertical">
        <LinearLayout
            android:id="@+id/pop_layout"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="vertical"
            android:layout_alignParentBottom="true"
            android:background="#EEE"
            android:layout_width="match_parent">
            <Button
                android:id="@+id/btn_smsloginauthentication_loginmenupopupwindow"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="通过短信验证登陆"
                android:background="@drawable/v_line"
                android:textColor="@color/fonts_color" />
            <Button
                android:id="@+id/btn_changepassword_loginmenupopupwindow"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="修改密码"
                android:background="@drawable/v_line"
                android:textColor="@color/fonts_color" />
            <Button
                android:id="@+id/btn_cancel"
                android:layout_marginTop="10dip"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="取消"
                android:textColor="@color/fonts_color"
                android:background="@drawable/top_line" />
        </LinearLayout>
    </RelativeLayout>

    对应的Activity 代码 LoginMenuPopupWindow.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Android.App;
    using Android.Content;
    using Android.OS;
    using Android.Runtime;
    using Android.Views;
    using Android.Widget;
    using static Android.Views.View;
    
    namespace Dorid
    {
        [Activity(Theme = "@style/MyDialogStyleBottom")]
        public class LoginMenuPopupWindow : Activity, IOnClickListener
        {
            protected override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState);
                SetContentView(Resource.Layout.LoginMenuPopupWindow);
    
                var windowManager = WindowManager;
                var windowManagerLayoutParams = Window.Attributes;
                var displayMetrics = new Android.Util.DisplayMetrics();
                windowManager.DefaultDisplay.GetMetrics(displayMetrics);
                windowManagerLayoutParams.Width = (int)(displayMetrics.WidthPixels * 1); // 宽度设置
                Window.Attributes = windowManagerLayoutParams;
    
                var btn_cancel = FindViewById<Button>(Resource.Id.btn_cancel);
                var btn_changepassword = FindViewById<Button>(Resource.Id.btn_changepassword_loginmenupopupwindow);
                var btn_smsloginauthentication = FindViewById<Button>(Resource.Id.btn_smsloginauthentication_loginmenupopupwindow);
    
                btn_cancel.SetOnClickListener(this);
                btn_changepassword.SetOnClickListener(this);
                btn_smsloginauthentication.SetOnClickListener(this);
                // Create your application here
            }
    
            public void OnClick(View v)
            {
                Intent intent = new Intent();
                switch (v.Id)
                {
                    case Resource.Id.btn_smsloginauthentication_loginmenupopupwindow:
                        intent.PutExtra("Type", "SmsLogin");
                        SetResult(Result.Ok, intent);
                        break;
                    case Resource.Id.btn_changepassword_loginmenupopupwindow:
                        intent.PutExtra("Type", "ChangePassword");
                        SetResult(Result.Ok, intent);
                        break;
                    case Resource.Id.btn_cancel:
                    default: break;
                }
                Finish();
            }
    
            public override bool OnTouchEvent(MotionEvent e)
            {
                Finish();
                return base.OnTouchEvent(e);
            }
        }
    }
  • 相关阅读:
    学到的一些函数和好的方法
    MVC 捋一遍(3)
    MVC 捋一遍(2)
    mvc 安装ef遇到的各种奇葩问题
    MVC 捋一遍(1)
    httpServletRequest.getCharacterEncoding()取出来是个null,怎么办?
    spring常用注解
    覆盖io.spring.platform管理的版本号
    下拉点击跳到指定链接(类同友情链接)
    EditPlus 3.7激活码注册码
  • 原文地址:https://www.cnblogs.com/mycing/p/5570167.html
Copyright © 2020-2023  润新知