UI效果(3): 自定义Dialog

来源:互联网 发布:决战武林进阶数据汇总 编辑:程序博客网 时间:2024/05/20 10:56

在这篇博客中,你可以了解到下面几项内容:


<1> LayoutInflater 的使用


<2> Dialog、AlertDialog与自定义布局


<3> Button 的onClick属性


运行,界面就是两个BUtton




自定义Dialog



自定义AlertDialog



完整源码下载地址:http://download.csdn.net/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) customDialog.findViewById(R.id.about_button);    btn_ok.setOnClickListener(new OnClickListener() {// 该事件被触发@Overridepublic 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() {@Overridepublic 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() {// 该事件可以被触发@Overridepublic 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>

原创粉丝点击