在这篇博客中,你可以了解到下面几项内容:
<1>LayoutInflater 的使用
<2>Dialog、AlertDialog与自定义布局
<3> Button 的onClick属性
上几张效果图,小秀一下!
运行,界面就是两个BUtton
自定义Dialog
自定义AlertDialog
完整源码下载地址:http://download.youkuaiyun.com/source/3512363
1. Activity代码
package mark.zhang; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; public class CustomDialogActivity extends Activity { Builder customAlertDialog = null; Dialog customDialog = null; LayoutInflater inflater = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); } /** * 为customDialog这个Button设置监听器 * * 注意:在xml文件中设置onClick属性要与改名称一致,否则报错 * * @param v * 该参数是必需的 */ public void customDialog(View v) { customDialog = new Dialog(this); customDialog.setContentView(R.layout.about); customDialog.setTitle("自定义Dialog"); //该句代码如果设置为false的话,点击"返回"按钮不可以退出该dialog //customDialog.setCancelable(false); View view = inflater.inflate(R.layout.about, (ViewGroup)findViewById(R.id.AboutLinearView)); // 自定义布局中的Button final Button btn_ok = (Button) view.findViewById(R.id.about_button); btn_ok.setOnClickListener(new OnClickListener() {// 该事件没有被触发,不知道为什么?? @Override public void onClick(View v) { Log.d("mark", "myself dialog!"); } }); // 显示对话框 customDialog.show(); } /** * 为customAlertDialog这个Button设置监听器 * * 注意:在xml文件中设置onClick属性要与改名称一致,否则报错 * * @param v * 该参数是必需的 */ public void customAlertDialog(View v) { customAlertDialog = new AlertDialog.Builder(this); // /layout/about.xml自定义布局文件 View view = inflater.inflate(R.layout.about, (ViewGroup)findViewById(R.id.AboutLinearView)); customAlertDialog.setTitle("自定义AlertDialog").setView(view); customAlertDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); // 自定义布局中的Button final Button btn_ok = (Button) view.findViewById(R.id.about_button); btn_ok.setOnClickListener(new OnClickListener() {// 该事件可以被触发 @Override public void onClick(View v) { Log.d("mark", "myself alertDialog!"); // 其它操作,比如结束该Activity或者启动服务、另一个Activity等 } }); // 显示对话框 customAlertDialog.show(); } } 2. main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="5dip" android:text="customDialog" android:onClick="customDialog" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:text="customAlertDialog" android:onClick="customAlertDialog" /> </LinearLayout>这里需要注意,两个Button都设置了onClick属性,看看Activity代码中有两个对应的方法。3. 自定义布局文件about.xml
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/AboutScrollView"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/AboutLinearView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/AboutTextView" android:textColor="?android:attr/textColorPrimaryDisableOnly" android:textAppearance="?android:attr/textAppearanceSmall" android:autoLink="all" android:padding="11dp" android:text="@string/about_text" /> <Button android:id="@+id/about_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="ok,I know!" /> </LinearLayout> </ScrollView>