关键在于设置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应用的界面设计与...
在Android开发中,自定义全屏Dialog是一种常见的需求,它能提供更为丰富的用户体验,比如用于展示大图或者视频预览。本篇文章将深入探讨如何在Android中实现一个自定义的全屏Dialog,以及如何实现全屏显示图片的功能...
实现全屏Dialog的关键在于设置Dialog的宽高为屏幕尺寸。我们可以通过以下步骤来实现: 1. 创建一个新的布局文件作为Dialog的内容视图,例如`dialog_fullscreen.xml`。在这个布局文件中,可以设置根布局为`...
5. 悬浮效果:通过设置`WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN`或`FLAG_LAYOUT_NO_LIMITS`,可以让Dialog浮在整个Activity之上,实现全屏或半透明的效果。 三、使用DialogFragment 在Android 3.0及...
6. **尺寸控制**:有时,开发者希望Dialog占据屏幕的一部分或者全屏显示。这可以通过修改Dialog的宽高属性来实现,例如设置`getWindow().setLayout()`。 7. **弹出位置**:默认情况下,Dialog会居中显示。如果需要...
在Android开发中,自定义Dialog是一种常见的需求,它允许开发者根据项目需求定制对话框的样式、功能和交互体验。在本教程中,我们将探讨如何在Android Studio中创建一个仿iOS样式的自定义Dialog。 首先,我们需要...
在Material Design规范中,Dialog是一种全屏或半屏的弹出视图,用于在主流程中提供临时信息或决策选项。它们通常包含标题、内容、操作按钮以及可选的关闭图标。为了遵循Material Design风格,我们的自定义Dialog应...
最近用到类似苹果悬浮按钮这种非全屏显示的界面,于是第一想到的是利用自定义Dialog来实现,写了一个自定义Dialog的最简单的Demo。比较简单,易于学习。另有我的博客介绍 ...
6. **对话框行为**:在某些情况下,开发者可能希望Dialog能够漂浮在其他视图之上,或者全屏显示,或者在特定条件下自动关闭。这个库可能提供了这些功能的配置选项。 7. **兼容性**:作为一个高质量的开源项目,...
例如,我们可以设置Dialog为全屏、无背景或者添加进出动画。 4. **添加交互逻辑**:在Dialog中添加点击事件监听器,处理用户点击按钮或者其他元素的行为。例如,我们可以在初始化Dialog时,通过findViewById()获取...
本篇将详细讲解如何实现一个全屏显示的自定义`Dialog`,尤其适用于展示图片等需要大屏幕空间的场景。 首先,我们来看一下`Dialog`的基本概念。`Dialog`是基于`Activity`的一个子类,它继承了`Window`的特性,可以在...
"全屏dialog小demo"是一个示例项目,它展示了如何将Dialog扩展为全屏模式,并添加监听功能来处理用户的交互行为。在这个场景中,我们可以探讨以下几个关键知识点: 1. **Dialog的基本使用**: Dialog是Android中的...
上述代码中,`android:windowIsFloating`设为false使Dialog不再悬浮,`android:windowFullscreen`设为true使其全屏显示,`android:windowContentOverlay`设为@null去除顶部的状态栏覆盖,`android:...
在IT行业中,尤其是在Android或者Java应用开发中,`Presentation`和`自定义Dialog`是两个重要的概念,它们用于提供更好的用户界面和交互体验。本文将深入探讨这两个主题,并结合具体的编程实践来阐述如何使用它们。 ...
在Android开发中,有时我们需要创建个性化的用户交互体验,例如在一个自定义的Dialog中播放视频。这个场景下,我们可以利用SurfaceView来实现视频播放,并且赋予它一些基本的控制功能,比如播放、暂停、显示进度条...
- 对于Dialog,要考虑到全屏设备和非全屏设备的适配,可能需要动态调整Dialog的宽高比。 6. **测试和调试**: - 使用 Espresso 或 Robotium 进行UI测试,确保列表的折叠和Dialog的弹出行为符合预期。 - 调试过程...
还可以调整Dialog的宽度和高度,使其填充全屏或自适应内容。 - **自定义行为**:除了基本的按钮点击事件,还可以添加其他交互逻辑,比如点击某个视图触发特定操作。 由于这个压缩包包含的代码未逐一验证,可能需要...
在实际项目中,根据需求可能还需要考虑其他因素,如Dialog的宽高比、是否可取消、是否全屏显示等。同时,注意保持Dialog的简洁性和易用性,使其符合用户的使用习惯,提供良好的用户体验。在自定义过程中,不断调整和...