`

自定义全屏Dialog

阅读更多
关键在于设置Style
    <style name="Dialog_Fullscreen">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowFullscreen">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:backgroundDimEnabled">true</item>
    </style>


public class SpinnerDialog extends Dialog {

	private Context mContext;

	private ArrayAdapter<CharSequence> mAdapter = null;

	private OnConfirmListener mListener;

	private View mRoot;

	public SpinnerDialog(Context context) {
		this(context, R.style.Dialog_Fullscreen);
	}

	public SpinnerDialog(Context context, int theme) {
		super(context, R.style.Dialog_Fullscreen);
		mContext = context;
	}

	public void setSpinnerData(int resId) {
		mAdapter = ArrayAdapter.createFromResource(mContext, resId,
				android.R.layout.simple_spinner_item);
	}

	public void setSpinnerData(ArrayAdapter<CharSequence> adapter) {
		this.mAdapter = adapter;
	}

	private View getView() {

		mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		// get layout
		View v = LayoutInflater.from(mContext).inflate(R.layout.spinner_dialog,
				null);

		// bind data
		final Spinner spinner = (Spinner) v.findViewById(R.id.item_selector);
		spinner.setAdapter(mAdapter);

		// set click event
		v.findViewById(R.id.btnOK).setOnClickListener(
				new View.OnClickListener() {

					public void onClick(View v) {
						if (mListener != null) {
							int idx = spinner.getSelectedItemPosition();
							String val = spinner.getSelectedItem().toString();
							mListener.onConfirm(idx, val);
						}
						dismiss();
					}
				});

		v.findViewById(R.id.btnCancel).setOnClickListener(
				new View.OnClickListener() {

					public void onClick(View v) {
						cancel();
					}
				});

		return v;
	}

	public void setOnConfirmListener(OnConfirmListener listener) {
		mListener = listener;
	}

	@Override
	protected void onStart() {
		super.onStart();
		
		if (mRoot == null) {
			mRoot = getView();
			setContentView(mRoot);
		}
	}

	/**
	 * Interface definition for a callback to be invoked when press OK button.
	 */
	public interface OnConfirmListener {

		public void onConfirm(int idx, String value);
	}
}

调用
SpinnerDialog dlg = new SpinnerDialog(this);
dlg.setSpinnerData(R.array.xxx);
dlg.setOnConfirmListener(listener);
分享到:
评论

相关推荐

    Android自定义全屏Dialog实例

    在Android开发中,自定义全屏Dialog是一种常见的需求,它能提供更为沉浸式的用户体验,使得用户在处理特定任务时能够更加专注。本教程将详细讲解如何实现这样一个功能,旨在帮助开发者提升Android应用的界面设计与...

    android自定义全屏dialog

    在Android开发中,自定义全屏Dialog是一种常见的需求,它能提供更为丰富的用户体验,比如用于展示大图或者视频预览。本篇文章将深入探讨如何在Android中实现一个自定义的全屏Dialog,以及如何实现全屏显示图片的功能...

    Android Dialog全屏显示、动画显示

    实现全屏Dialog的关键在于设置Dialog的宽高为屏幕尺寸。我们可以通过以下步骤来实现: 1. 创建一个新的布局文件作为Dialog的内容视图,例如`dialog_fullscreen.xml`。在这个布局文件中,可以设置根布局为`...

    自定义dialog

    5. 悬浮效果:通过设置`WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN`或`FLAG_LAYOUT_NO_LIMITS`,可以让Dialog浮在整个Activity之上,实现全屏或半透明的效果。 三、使用DialogFragment 在Android 3.0及...

    安卓Android源码——HerilyAlertDialog完全自定义的Dialog.rar

    6. **尺寸控制**:有时,开发者希望Dialog占据屏幕的一部分或者全屏显示。这可以通过修改Dialog的宽高属性来实现,例如设置`getWindow().setLayout()`。 7. **弹出位置**:默认情况下,Dialog会居中显示。如果需要...

    【自定义Dialog】封装IOS样式的Dialog--Android Studio

    在Android开发中,自定义Dialog是一种常见的需求,它允许开发者根据项目需求定制对话框的样式、功能和交互体验。在本教程中,我们将探讨如何在Android Studio中创建一个仿iOS样式的自定义Dialog。 首先,我们需要...

    自定义MaterialDesign风格的Dialog

    在Material Design规范中,Dialog是一种全屏或半屏的弹出视图,用于在主流程中提供临时信息或决策选项。它们通常包含标题、内容、操作按钮以及可选的关闭图标。为了遵循Material Design风格,我们的自定义Dialog应...

    自定义Dialog的最简Demo

    最近用到类似苹果悬浮按钮这种非全屏显示的界面,于是第一想到的是利用自定义Dialog来实现,写了一个自定义Dialog的最简单的Demo。比较简单,易于学习。另有我的博客介绍 ...

    Android高级应用源码-HerilyAlertDialog完全自定义的Dialog.rar

    6. **对话框行为**:在某些情况下,开发者可能希望Dialog能够漂浮在其他视图之上,或者全屏显示,或者在特定条件下自动关闭。这个库可能提供了这些功能的配置选项。 7. **兼容性**:作为一个高质量的开源项目,...

    各种自定义dialog

    例如,我们可以设置Dialog为全屏、无背景或者添加进出动画。 4. **添加交互逻辑**:在Dialog中添加点击事件监听器,处理用户点击按钮或者其他元素的行为。例如,我们可以在初始化Dialog时,通过findViewById()获取...

    android全屏dialog

    本篇将详细讲解如何实现一个全屏显示的自定义`Dialog`,尤其适用于展示图片等需要大屏幕空间的场景。 首先,我们来看一下`Dialog`的基本概念。`Dialog`是基于`Activity`的一个子类,它继承了`Window`的特性,可以在...

    全屏dialog小demo

    "全屏dialog小demo"是一个示例项目,它展示了如何将Dialog扩展为全屏模式,并添加监听功能来处理用户的交互行为。在这个场景中,我们可以探讨以下几个关键知识点: 1. **Dialog的基本使用**: Dialog是Android中的...

    android 自定义dialogfragment全屏对话窗体

    上述代码中,`android:windowIsFloating`设为false使Dialog不再悬浮,`android:windowFullscreen`设为true使其全屏显示,`android:windowContentOverlay`设为@null去除顶部的状态栏覆盖,`android:...

    Presentation与自定义Dialog的使用

    在IT行业中,尤其是在Android或者Java应用开发中,`Presentation`和`自定义Dialog`是两个重要的概念,它们用于提供更好的用户界面和交互体验。本文将深入探讨这两个主题,并结合具体的编程实践来阐述如何使用它们。 ...

    自定义Dialog中播放视频

    在Android开发中,有时我们需要创建个性化的用户交互体验,例如在一个自定义的Dialog中播放视频。这个场景下,我们可以利用SurfaceView来实现视频播放,并且赋予它一些基本的控制功能,比如播放、暂停、显示进度条...

    仿QQ列表可折叠+自定义Dialog结合

    - 对于Dialog,要考虑到全屏设备和非全屏设备的适配,可能需要动态调整Dialog的宽高比。 6. **测试和调试**: - 使用 Espresso 或 Robotium 进行UI测试,确保列表的折叠和Dialog的弹出行为符合预期。 - 调试过程...

    安卓Dialog对话框相关-自定义dialog.zip

    还可以调整Dialog的宽度和高度,使其填充全屏或自适应内容。 - **自定义行为**:除了基本的按钮点击事件,还可以添加其他交互逻辑,比如点击某个视图触发特定操作。 由于这个压缩包包含的代码未逐一验证,可能需要...

    自定义DialogDemo

    在实际项目中,根据需求可能还需要考虑其他因素,如Dialog的宽高比、是否可取消、是否全屏显示等。同时,注意保持Dialog的简洁性和易用性,使其符合用户的使用习惯,提供良好的用户体验。在自定义过程中,不断调整和...

Global site tag (gtag.js) - Google Analytics