您的位置:首页 > 移动开发 > Android开发

Android自定义Dialog

2012-11-16 13:21 162 查看
自定义dialog肯定是用的很多了 但是感觉每次做都是很乱 单纯完成任务而已,现在封装了一下 以后用到直接copy把

UI没有做 有时间自己搞把



主activity

package com.su.testcustomdialog;
 
import com.su.testcustomdialog.MyDialog.Dialogcallback;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
public class CustomDialogActivity extends Activity {
        private TextView textView;
 
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                textView = (TextView) findViewById(R.id.textView11);
                Button button = (Button) findViewById(R.id.button1);
                button.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                                MyDialog myDialog = new MyDialog(CustomDialogActivity.this);
                                myDialog.setContent("哥来自Activity");
                                myDialog.setDialogCallback(dialogcallback);
                                myDialog.show();
 
                        }
                });
        }
/**
 * 设置mydialog需要处理的事情
 */
        Dialogcallback dialogcallback = new Dialogcallback() {
 
                @Override
                public void dialogdo(String string) {
                        textView.setText("哥來自Dialog: " + string);
 
                }
        };
 
}


然后是MyDialog的核心了

package com.su.testcustomdialog;
import android.app.Dialog;
import android.content.Context;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
/**
 * 自定义dialog
 * @author sfshine
 *
 */
public class MyDialog {
 
        Context context;
        Dialogcallback dialogcallback;
        Dialog dialog;
        Button sure;
        TextView textView;
        EditText editText;
        /**
         * init the dialog
         * @return
         */
        public MyDialog(Context con) {
                this.context = con;
                dialog = new Dialog(context, R.style.dialog);
                dialog.setContentView(R.layout.dialog);
                textView = (TextView) dialog.findViewById(R.id.textview);
                sure = (Button) dialog.findViewById(R.id.button1);
                editText = (EditText) dialog.findViewById(R.id.editText1);
 
                sure.setOnClickListener(new View.OnClickListener() {
 
                        @Override
                        public void onClick(View v) {
                                dialogcallback.dialogdo(editText.getText().toString());
                                dismiss();
 
                        }
                });
 
        }
        /**
         * 设定一个interfack接口,使mydialog可以處理activity定義的事情
         * @author sfshine
         *
         */
        public interface Dialogcallback {
                public void dialogdo(String string);
        }
 
        public void setDialogCallback(Dialogcallback dialogcallback) {
                this.dialogcallback = dialogcallback;
        }
 
        /**
         * @category Set The Content of the TextView
         * */
        public void setContent(String content) {
                textView.setText(content);
        }
 
        /**
         * Get the Text of the EditText
         * */
        public String getText() {
                return editText.getText().toString();
        }
 
        public void show() {
                dialog.show();
        }
 
        public void hide() {
                dialog.hide();
        }
 
        public void dismiss() {
                dialog.dismiss();
        }
 
}


dialog的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="30.0dp"
    android:orientation="vertical"
    android:padding="10dip" >
 
    <!-- 这里如果使用android:layout_width="5000dip"设置一个极大的值 系统就会 -->
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="30.0dp"
        android:gravity="center"
        android:text="自定义Dialog"
        android:textColor="#F0F"
        android:textSize="20dip" />
 
    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
 
    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >
    </EditText>
 
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="確定" />
 
</LinearLayout>


style 文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <style name="dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">#FFF</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:backgroundDimEnabled">true</item>
    </style>
 
</resources>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: