自定义对话框

    xiaoxiao2026-05-18  1

    在学着写安卓程序的登录验证的时候,学着知乎等一大票软件用自定义的对话框进行登录验证。 在试着写的时候,也废了一些功夫去翻阅网上各种资料,有很多都是直接把自己的代码丢在博客上,这里说一下自己学习之后的思路。 首先是思路。我们要在一个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); } //其余的部分不再赘述,多半是一些与处理数据的逻辑相关的内容
    转载请注明原文地址: https://ju.6miu.com/read-1309802.html
    最新回复(0)