您的位置:首页 > 移动开发 > Android开发

Android 用户自定义对话框

2014-12-13 21:39 369 查看
Android 开发过程中经常需要用户自定义的对话框。这种对话框需要支持在对话框里面输入的内容在对话框关闭后传递给当前所在的Activity。今天我写了一个例子来展示用户自定义对话框的定义和使用。用户自定义对话框的例子包含已下几个部分:




1)Activity

CustomDialogActivity,定义一个Activity,包含一个按钮和一个TextView,点击该按钮弹出对话框,在对话框输入字符串,点击对话框上的按钮之后,对话框输入的字符串会显示在这个TextView上。

2)Activity Layout

activity_main2.xml,定义了CustomDialogActivity的布局,包含了一个按钮和一个TextView。

3)Dialog Layout

customdialog.xml,定义了自定义对话框的布局,包含一个输入框和一个按钮。

CustomDialogActivity.java代码如下:



package com.augmentum.example;

import com.example.androidexample.R;
import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class CustomDialogActivity extends Activity {

	private Button buttonDialog;
    private TextView textDialog;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main2);
		
		textDialog = (TextView)findViewById(R.id.textView1);
		buttonDialog = (Button)findViewById(R.id.buttondialog);
		
		buttonDialog.setOnClickListener(listener);
	}
	
	private OnClickListener listener = new OnClickListener(){
		@Override
		public void onClick(View view) {
			// TODO Auto-generated method stub
			showCustomDialog(textDialog);
		}
	};
	
	protected void showCustomDialog(final TextView _textDialog) {
        // TODO Auto-generated method stub
        final Dialog dialog = new Dialog(CustomDialogActivity.this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.customdialog);
        
        final EditText editText = (EditText)dialog.findViewById(R.id.editText1);
        Button button = (Button)dialog.findViewById(R.id.button1);    
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                _textDialog.setText(editText.getText().toString());
                dialog.dismiss();
            }
        });    
        dialog.show();
    }

}

activity_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:padding="10dip">

    <Button
        android:id="@+id/buttondialog"
        android:layout_width="fill_parent"
        android:layout_height="40dip"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="Click to show dialog" 
        android:background="#336699"
        android:textSize="25sp"
        android:textColor="#ffffff"/>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="" 
        android:textSize="25sp"/>

</RelativeLayout>

customdialog.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dip" 
    android:background="#336699">

    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:ems="10" 
        android:hint="enter text to display"
        android:singleLine="true">
        
        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="120dip"
        android:layout_height="40dip"
        android:layout_below="@+id/editText1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="17dp"
        android:text="Submit"
        android:textSize="25sp"
        android:background="#669900" />

</RelativeLayout>

注意:不要忘记把CustomDialogActivity注册到AndroidManifest.xml中。

运行的效果如下:







这种对话框的样式及由那些元素组成均可以自定义,在开发过程中能够经常用到。欢迎批评指正




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: