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

Android自定义Dialog

程序员文章站 2022-07-02 14:54:43
...

自定义dialog肯定是用的很多了 但是感觉每次做都是很乱 单纯完成任务而已,现在封装了一下 以后用到直接copy把
UI没有做 有时间自己搞把

Android自定义Dialog


主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>



转载于:https://www.cnblogs.com/sfshine/archive/2012/11/16/2808023.html