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); } } }