zoukankan      html  css  js  c++  java
  • cathome 猫家 开发日记-弹窗

    为什么android 和ios 的弹窗都做的灵活性不高?

    android自带的连个满宽都要自己写代码来实现。 真是无聊。

    样式

    <!--popupwindow -->
        <style name="Theme.Light.Dialog" parent="android:style/Theme.Dialog">
            <item name="android:windowBackground">@android:color/transparent</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowIsFloating">true</item>
            <item name="android:windowContentOverlay">@null</item>
            <item name="android:scrollHorizontally">true</item>
        </style>

    继承自 AppCompatDialog

    package com.utils.widgets;
    
    import android.content.Context;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatDialog;
    import android.view.Gravity;
    import android.view.View;
    import android.view.Window;
    import android.view.WindowManager;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.RelativeLayout;
    import android.widget.TextView;
    
    import com.android.linson.catshome.R;
    
    public abstract class LSUIPopupWindow extends AppCompatDialog
    {
        protected int mHeight=-1;
        protected RelativeLayout mContentLayout;
        protected String mTitle="";
        protected TextView mTVTitle;
        protected LinearLayout mMenuLayout;
        protected Button mBtn_cancel;
        protected Button mBtn_submit;
        private static int mWindowStyle=R.style.Theme_Light_Dialog;
    
        public LSUIPopupWindow(Context context, int heightdp, String title)
        {
            super(context,mWindowStyle);
            mHeight=heightdp;
            mTitle=title;
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            SetupFullWindow();
            setContentView(R.layout.lsuipopupwindow);
            mContentLayout=findViewById(R.id.popupcontenct);
            mTVTitle=findViewById(R.id.popuptitle);
            mTVTitle.setText(mTitle);
            mMenuLayout=findViewById(R.id.popupmenu);
            mBtn_cancel=findViewById(R.id.btn_cancel);
            mBtn_submit=findViewById(R.id.btn_submit);
            mBtn_submit.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    OnClickSubmit(v);
                }
            });
            mBtn_cancel.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    dismiss();//windowmanager.removeview.......
                }
            });
    
            OnBaseCreated(savedInstanceState);
        }
    
        public abstract void OnClickSubmit(View v);
    
        public abstract void OnBaseCreated(Bundle savedInstanceState);
    
        private void SetupFullWindow()
        {
            Window window= getWindow();
            window.setGravity(Gravity.BOTTOM);
    
            // window.setWindowAnimations(R.style.dialogStyle);
            window.getDecorView().setPadding(0, 0, 0, 0);
    
            WindowManager.LayoutParams lp = window.getAttributes();
            lp.width = WindowManager.LayoutParams.MATCH_PARENT;
            lp.height =mHeight;
            window.setAttributes(lp);
        }
    }

    使用,基类做成虚类,主要目的是让派生类强制实现虚方法。其实基类非虚类更合理。不过无所谓了。

    testpopup ab =new testpopup(this,400,"hi");
            ab.show();
    public static class testpopup extends LSUIPopupWindow
        {
            public testpopup(Context context, int heightdp, String title)
            {
                super(context, heightdp, title);
            }
    
            @Override
            public void OnClickSubmit(View v)
            {
                dismiss();
            }
    
            @Override
            public void OnBaseCreated(Bundle savedInstanceState)
            {
    
            }
        }
  • 相关阅读:
    2016.6.21 -Dmaven.multiModuleProjectDirectory system propery is not set,Check $M2_HOME environment variable and mvn script match.
    2016.6.21 maven:Failure to transfer ... from ....
    2016.7.5 如何在maven中添加所需依赖(只知道jar包的部分名字的情况)
    2016.6.20 maven更改repository的位置
    2016.6.20 maven下载与安装步骤
    2016.6.20 在Eclipse配置Tomcat服务器的步骤
    2016.6.21 eclipse配置server locations时按钮为灰色
    2016.6.21 将Eclipse中项目部署到tomcat下
    2016.6.20 tomcat安装出现No Java Virtual Machine found in..
    vue小荔枝,时间控件,动态按月份增减。
  • 原文地址:https://www.cnblogs.com/lsfv/p/9831368.html
Copyright © 2011-2022 走看看