自定义对话框

在学着写安卓程序的登录验证的时候,学着知乎等一大票软件用自定义的对话框进行登录验证。
在试着写的时候,也废了一些功夫去翻阅网上各种资料,有很多都是直接把自己的代码丢在博客上,这里说一下自己学习之后的思路。

首先是思路。我们要在一个Activity中显示一个插件,这个插件有两部分构成,一部分是画面,一部分是背后的逻辑。

首先是在Activity中

_Dialog _dialog = new _Dialog(CurrentActivity.this);
//注意,这里不能用getApplicaitonContext(),在另一篇博文中有具体讲
_dialog.show();

在XML中,有style和layout两个部分的内容

<style name="login_dialog" parent="@android:style/Theme.Dialog">
        <!-- 这个配合登录时的dialog用 -->
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:backgroundDimEnabled">true</item>
    </style>

这个layout名 login.xml,写的不是很好,勉强看

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/login_error"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:gravity="left"
        android:text="输入的账号和密码不正确"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#ff0000"
        android:visibility="invisible" />

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:gravity="left"
        android:text="账号"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_x="1dp"
        android:layout_y="30dp" />


    <EditText
        android:id="@+id/txt_username"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:autoText="false"
        android:capitalize="none"
        android:gravity="fill_horizontal"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_below="@+id/login_error"
        android:layout_alignStart="@+id/login_error"
        android:layout_x="1dp"
        android:layout_y="68dp" />



    <TextView
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:gravity="left"
        android:text="密码"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_x="1dp"
        android:layout_y="113dp" />



    <EditText
        android:id="@+id/txt_password"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:inputType="textPassword"
        android:autoText="false"
        android:capitalize="none"
        android:gravity="fill_horizontal"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_alignParentBottom="true"
        android:layout_alignStart="@+id/login_error"
        android:layout_marginBottom="47dp"
        android:layout_x="1dp"
        android:layout_y="157dp" />

    <Button
        android:id="@+id/login_sure"
        android:text="确定"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txt_password"
        android:layout_alignStart="@+id/txt_username"
        android:layout_marginTop="101dp"
        android:layout_x="88dp"
        android:layout_y="200dp" />

    <Button
        android:id="@+id/login_cancel"
        android:text="取消"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_alignTop="@+id/login_sure"
        android:layout_alignEnd="@+id/txt_password"
        android:layout_x="233dp"
        android:layout_y="200dp" />

    <!--<TextView-->
        <!--android:id="@+id/txt_toregister"-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content"-->
        <!--android:layout_marginLeft="20dip"-->
        <!--android:layout_marginRight="20dip"-->
        <!--android:gravity="left"-->
        <!--android:textAppearance="?android:attr/textAppearanceMedium"-->
        <!--android:textColor="#2200C1" />-->


</AbsoluteLayout>

在 _Dialog 类中(自定义的Dialog)

//在_Dialog的构造方法中,为几个变量赋值
public _Dialog(Context context) {
        super(context);
        dialog = new Dialog(context, R.style.login_dialog);
        dialog.setContentView(R.layout.login);
        positiveButton = (Button) dialog.findViewById(R.id.login_sure);
        negativeButton = (Button) dialog.findViewById(R.id.login_cancel);
}
//其余的部分不再赘述,多半是一些与处理数据的逻辑相关的内容
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值