AlertDialog与Dialog的区别以及一个奇怪的问题2

package com.android.calendar.views;

import java.util.List;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.android.calendar.R;

/**
 * 
 * 从下往上弹出的对话框
 * 
 * @author gjl
 * 
 */

public class PopMenuDialog extends AlertDialog {

	private CharSequence mTitle;
	private String[] mItems;

	private View mContentView;
	private ListView mListView;

	private DialogInterface.OnClickListener mItemClickListener;

	public PopMenuDialog(Context context) {
		super(context, R.style.CustomDialog);
	}

	public PopMenuDialog setMenuTitle(String title) {
		mTitle = title;
		return this;
	}

	public PopMenuDialog setMenuTitle(int titleResId) {
		try {
			mTitle = getContext().getResources().getString(titleResId);
		} catch (Exception e) {
			mTitle = "";
		}
		return this;
	}

	public PopMenuDialog setMenuDatas(String[] items) {
		mItems = items;
		return this;
	}

	public PopMenuDialog setMenuDatas(List<String> items) {
		if (items != null) {
			mItems = new String[items.size()];
			for (int i = 0; i < items.size(); i++) {
				mItems[i] = items.get(i);
			}
		}
		return this;
	}

	public PopMenuDialog setMenuSelectListener(
			final DialogInterface.OnClickListener onItemSelectListener) {
		mItemClickListener = onItemSelectListener;

		return this;
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		init(getContext());

		setContentView(mContentView);
		WindowManager windowManager = (WindowManager) getContext()
				.getSystemService(Context.WINDOW_SERVICE);
		Display display = windowManager.getDefaultDisplay();
		WindowManager.LayoutParams lp = getWindow().getAttributes();
		lp.width = (int) (display.getWidth()); // 设置宽度
		getWindow().setAttributes(lp);
	}

	private void init(Context context) {
		if (mItems == null) {
			mItems = new String[0];
		}
		if (mTitle == null) {
			mTitle = "";
		}

		setCancelable(true);

		View contentView = LayoutInflater.from(context).inflate(
				R.layout.number_pick_view, null);
		mContentView = contentView;

		TextView title = (TextView) contentView.findViewById(R.id.pick_type);
		title.setText(mTitle);
		contentView.findViewById(R.id.cancel_btn).setVisibility(View.GONE);
		mListView = (ListView) contentView.findViewById(R.id.num_list);
		try {
			mListView.setDivider(context.getResources().getDrawable(
					android.R.drawable.divider_horizontal_bright));
			mListView.setSelector(android.R.drawable.list_selector_background);
		}catch(Exception e){
		}
		mListView.setAdapter(new ArrayAdapter<String>(context,
				R.layout.simple_number_item, R.id.simple_num, mItems));
		mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				dismiss();

				if (mItemClickListener != null) {
					mItemClickListener.onClick(PopMenuDialog.this, arg2);
				}
			}
		});

		Window window = getWindow();
		window.setGravity(Gravity.BOTTOM);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值