• Android的弹出登陆框的实现


    最近在做一个项目,要用到登陆框,几经波折,最后用的是直接将Activity的Theme属性设置成Dialog,然后达到了我想要的效果。

    下面是我的实现经历:

    1.首先,我是直接使用AlertDialog来实现,确定是,形状有点难看,而且获得Dialog里面的控件略显麻烦(因为我要做的登陆框有一定的布局),然后就给我就放弃了,可能因为我太水了,不能很好的使用它

    2.然后我就使用PopupWindow来实现,界面是达到了我的要求,控件的获得通过Inflater就可以获得了相对较简单,但是有一个缺点就是,当点击输入的时候,对话框不会根据软键盘的位置而改变位置,网上搜了搜,还不能直接监听软键盘的出现和消失的事件消息,挣扎了一个下午,果断放弃。

    3.最后直接就使用Activity来实现了,界面达到了要求,控件获取也容易,还能根据软键盘而改变位置,集体实现如下:

    第一,创建Activity,并布置好相应的布局。

    第二,个人觉得是最重要的一部,就是注册Activity的时候,设定好Activity的theme属性为Dialog,要自定义自己的Style文件,这样Activity的显示才会按照自己的要求实现,具体代码如下:

     <activity
                android:name="com.zsxy.schedule.Login"
                android:theme="@style/login_dialog" >
            </activity>

    其中login_dialog文件如下:

        <style name="login_dialog" parent="@android:style/Theme.Dialog">
            <item name="android:colorBackgroundCacheHint">@null</item>
            <item name="android:windowFrame">@null</item>
            <item name="android:windowIsFloating">true</item>
            <item name="android:windowIsTranslucent">true</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowBackground">@android:color/transparent</item>
            <item name="android:backgroundDimEnabled">false</item>
        </style>

    3.最后想调用其他Activity那样调用就行了

  • 相关阅读:
    phpstudy apache无法启动的解决办法
    Windows server 2008 快速搭建域环境
    使用netsh来进行端口转发
    基于docker构建测试环境
    [Leetcode] Linked List Cycle
    Hyper-V下安装Ossim系统
    Windows应用替代方案接龙
    图解CISCO 3550忘记密码解决方法
    硬件代理解决用户上网问题
    图->存储结构->数组表示法(邻接矩阵)
  • 原文地址:https://www.cnblogs.com/zds-song/p/3864112.html
Copyright © 2020-2023  润新知