Android 自定义Dialog
MainActivity
package com.example.zdydialog_demo; import com.example.zdydialog_demo.MyDialog.MyCall; import android.app.Activity; import android.app.Dialog; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private Button mBtn; private MyDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mBtn=(Button) findViewById(R.id.mBtn); mBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { dialog=new MyDialog(MainActivity.this, "确定退出吗?", "确定", "退出"); dialog.setCall(new MyCall() { @Override public void yes() { Toast.makeText(MainActivity.this, "确定", 0).show(); } @Override public void no() { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "取消", 0).show(); } }); dialog.show(); } }); } }
MyDialogpackage com.example.zdydialog_demo; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.widget.TextView; public class MyDialog extends Dialog{ private MyCall call; public MyDialog(Context context,String title,String yes,String no) { super(context); // TODO Auto-generated constructor stub this.title=title; this.yes=yes; this.no=no; } private TextView mTv_title,mTv_yes,mTv_No; private String title; private String yes; private String no; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.dialog); initView(); Window window=getWindow(); WindowManager manager = window.getWindowManager(); LayoutParams params = window.getAttributes(); Display display = manager.getDefaultDisplay(); params.width=(int) (display.getWidth()*0.8); params.height=(int) (display.getHeight()*0.4); window.setGravity(Gravity.CENTER); window.setAttributes(params); } private void initView() { mTv_title=(TextView) findViewById(R.id.mTv_title); mTv_yes=(TextView) findViewById(R.id.mTv_yes); mTv_No=(TextView) findViewById(R.id.mTv_No); mTv_title.setText(title); mTv_yes.setText(yes); mTv_No.setText(no); mTv_yes.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub call.yes(); dismiss(); } }); mTv_No.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { call.no(); dismiss(); } }); } public interface MyCall{ void yes(); void no(); } public void setCall(MyCall call){ this.call=call; } }
//一下是xml文件:
activity_main
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.zdydialog_demo.MainActivity" > <Button android:id="@+id/mBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="helle" /> </RelativeLayout>
dialog
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.zdydialog_demo.MainActivity" > <LinearLayout android:id="@+id/mLine" android:layout_width="200dp" android:layout_height="230dp" android:layout_centerInParent="true" android:background="#28c8b7" android:orientation="vertical" > <TextView android:id="@+id/mTv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="95dp" android:orientation="horizontal" > <TextView android:id="@+id/mTv_yes" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> <TextView android:id="@+id/mTv_No" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> </LinearLayout> </RelativeLayout>