android dialog——自定义对话框之一

来源:互联网 发布:网络互动文案招聘 编辑:程序博客网 时间:2024/05/04 10:08

还是先从最简单的开始吧,然后一步一步的扩展。
为了保证软件上所谓的低耦合度和可重用性,这里不得不需要单独建立一个类CustomerDialog,然后继承AlertDialog

  1. public class CustomerDialog extends AlertDialog {
  2. }
复制代码

然后添加一个带Context参数的构造器,context(上下文)通俗点讲一般是指归属于那个,这里就归属于调用的那个Acitivity,也就是说这个对话框是针对调用的那个Activity

  1. public CustomerDialog(Context context) {
  2. super(context);
  3. this.context = context;
  4. }
复制代码

接下来需要对AlertDialog的 onCreate方法覆盖,否则在外面就无法获得你创建的那个自定义对话框的内容了(当然你也可以直接在构造方法里调用setView,当这样一来耦合度就增加了),然后把自己的自定义内容通过setView关联进去。

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3.           TextView textView = new TextView(context);
  4.           textView.setText("这是一个自定义对话框");
  5.           textView.setTextSize(24);
  6.           textView.setTextColor(Color.BLACK);
  7.           setView(textView);
  8.           super.onCreate(savedInstanceState);
  9. }
复制代码

具体实现:
第一步:
res/layout/main.xml
定义一个button按钮,用来点击后弹出自定义对话框

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Button android:id="@+id/button"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="显示自定义对话框"
  11. />
  12. </LinearLayout>
复制代码

第二步:创建自定义对话框类
src/com/dialog/ui/CustomerDialog.java

  1. package com.dialog.ui;
  2. import android.app.AlertDialog;
  3. import android.content.Context;
  4. import android.graphics.Color;
  5. import android.os.Bundle;
  6. import android.widget.TextView;
  7. public class CustomerDialog extends AlertDialog {
  8. private Context context = null;
  9. public CustomerDialog(Context context) {
  10. super(context);
  11. this.context = context;
  12. }
  13. @Override
  14. protected void onCreate(Bundle savedInstanceState) {
  15. //此处仅一个简单的TextView,可以扩展到自定义xml里面
  16. TextView textView = new TextView(context);
  17. textView.setText("这是一个自定义对话框");
  18. textView.setTextSize(24);
  19. textView.setTextColor(Color.BLACK);
  20. setView(textView);
  21. super.onCreate(savedInstanceState);
  22. }
  23. }
复制代码

第三步:在创建一个Activity
src/com/dialog/activity/CustomerDialogActivity.java

  1. package com.dialog.activity;
  2. import android.app.Activity;
  3. import android.app.Dialog;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.widget.Button;
  7. import com.dialog.ui.CustomerDialog;
  8. public class CustomerDialogActivity extends Activity {
  9. private final int CUSTOMER_DIALOG = 1;
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. Button button = (Button) findViewById(R.id.button);
  15. View.OnClickListener listener = new View.OnClickListener() {
  16. @Override
  17. public void onClick(View view) {
  18. showDialog(CUSTOMER_DIALOG);
  19. }
  20. };
  21. button.setOnClickListener(listener);
  22. }
  23. @Override
  24. protected Dialog onCreateDialog(int id) {
  25. CustomerDialog dialog = null;
  26. switch(id) {
  27. case CUSTOMER_DIALOG:
  28. dialog = new CustomerDialog(CustomerDialogActivity.this);
  29. dialog.setTitle("自定义对话框");
  30. dialog.setIcon(R.drawable.icon);
  31. break;
  32. }
  33. return dialog;
  34. }
  35. }
复制代码

上个丑陋的效果图(源码就不提供了)
0_1303830218t7q5.jpg



接下来将继续扩展到自定义xml里面,未完待续

原创粉丝点击