欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android实现弹出登陆框的方案

程序员文章站 2022-06-04 12:16:25
下面是我的实现经历: 1.首先,我是直接使用alertdialog来实现,确定是,形状有点难看,而且获得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那样调用就行了