给出一个真正意义上的Demo :
新建一个风格xml :
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="DialogStyle" parent="@android:style/Theme.Dialog"> <item name="android:windowBackground">@drawable/ia</item> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowFullscreen">true</item> <item name="android:backgroundDimEnabled">true</item> </style> </resources>
新建一个自定义dialog对应的xml文件 :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="300.0dip" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/title_text_view" android:layout_width="300.0dip" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginBottom="10.0dip" android:layout_marginTop="20.0dip" android:gravity="center_horizontal" android:text="dialog_default_title" android:textSize="16.0sp" /> <TextView android:id="@+id/content_text_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginBottom="20.0dip" android:layout_marginLeft="15.0dip" android:layout_marginRight="15.0dip" android:gravity="left" android:text="dialog_latest_prompt" android:textSize="16.0sp" /> <View android:layout_width="300.0dip" android:layout_height="1.0dip" android:background="#ffdddddd" /> <LinearLayout android:id="@+id/option_bar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/dialog_ok" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:gravity="center" android:paddingBottom="14.0dip" android:paddingTop="14.0dip" android:textSize="18.0sp" /> <View android:layout_width="1.0dip" android:layout_height="fill_parent" android:background="#ffdddddd" /> <TextView android:id="@+id/dialog_cancel" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:gravity="center" android:paddingBottom="14.0dip" android:paddingTop="14.0dip" android:text="dialog_cancel" android:textSize="18.0sp" /> </LinearLayout> <TextView android:id="@+id/ok_text_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/ib" android:gravity="center" android:paddingBottom="14.0dip" android:paddingTop="14.0dip" android:text="dialog_ok_label" android:textSize="18.0sp" android:visibility="gone" /> </LinearLayout>
主程序xml :
<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:text="Button" /> </RelativeLayout>
自定义DialogFragment类:
package com.example.androiddialogfragmentttest; import android.annotation.SuppressLint; import android.app.Dialog; import android.app.DialogFragment; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.TextView; @SuppressLint("NewApi") public class MyAlertDialogFragment extends DialogFragment{ public static interface DialogClickListener{ public void doPositiveClick(); public void doNegativeClick(); } static DialogClickListener mListener; public static MyAlertDialogFragment newInstance(String title, String message,DialogClickListener listener) { // TODO Auto-generated method stub mListener=listener; MyAlertDialogFragment frag=new MyAlertDialogFragment(); return frag; } public MyAlertDialogFragment(){ } /* @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view=inflater.inflate(R.layout.layout_dialog, container, false); //Dialog dia=new Dialog(getActivity(),R.style.DialogStyle); //TextView tv=(TextView)view.findViewById(R.id.tve); //tv.setText("this is customer dialog !"); //dia.setContentView(view); return view; } */ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // TODO Auto-generated method stub final Dialog dia=new Dialog(getActivity(),R.style.DialogStyle); LayoutInflater inflater = (LayoutInflater) getActivity() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.layout_dialog, null, false); View ok = view.findViewById(R.id.dialog_ok); View cancel = view.findViewById(R.id.dialog_cancel); ok.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub dia.dismiss(); if(mListener!=null){ mListener.doPositiveClick(); } } }); cancel.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub dia.dismiss(); if(mListener!=null){ mListener.doNegativeClick(); } } }); dia.setContentView(view); return dia; } }
主程序:
package com.example.androiddialogfragmentttest; import com.example.androiddialogfragmentttest.MyAlertDialogFragment.DialogClickListener; import android.annotation.SuppressLint; import android.app.Activity; import android.app.DialogFragment; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { static DialogClickListener listener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView)findViewById(R.id.text); tv.setText("Android123-DialogFragment Samples"); Button button = (Button)findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { showDialog(); } }); } @SuppressLint("NewApi") void showDialog() { MyAlertDialogFragment newFragment = MyAlertDialogFragment.newInstance("title","information",listener); newFragment.show(getFragmentManager(), "Title"); } public void doPositiveClick() { Log.i("FragmentAlertDialog", "左键按下"); } public void doNegativeClick() { } }
若干张图片,ia.png,ib.png