很多应用中,在点击Button后,会弹出一个带箭头的对话框,指向这个Button。网上查了,很多人都说用PopupWindow可以实现,我对PopupWindow不熟,于是试着用Dialog实现。(需要注意的是:PopupWindow是一个阻塞式的弹出框,这就意味着在我们退出这个弹出框之前,程序会一直等待,这和AlertDialog不同,AlertDialog是非阻塞式弹出框,AlertDialog弹出的时候,后台可是还可以做其他事情的。)
先选用一个带箭头的图片(pop.gif)做Dialog的背景,Dialog的布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup_dialog"
android:orientation="vertical"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:background="@drawable/pop"
>
<Button android:id="@+id/btn_up" android:text="上"
android:layout_width="80dip" android:layout_height="25dip" android:background="@drawable/style_white_orange"
/>
<Button android:id="@+id/btn_down" android:text="下"
android:layout_width="80dip" android:layout_height="25dip" android:background="@drawable/style_white_orange"
/>
</LinearLayout>
另外,需要设定Dialog的样式。在values文件夹下新建styles.xml,如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@drawable/pop</item>
<item name="android:windowBackground">@color/transparent_background</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
尤其注意的是,sytles.xml里的background也要设为dialog的背景图片(pop.gif),windowBackground设为透明。
主页面的代码:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.btn);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
PopupDialog popupDialog = new PopupDialog(MainActivity.this, R.style.dialog);
popupDialog.setCanceledOnTouchOutside(true); // 点击Dialog之外的区域对话框消失
Window window = popupDialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.y = -64; // 设置竖直方向的偏移量
lp.dimAmount = 0f; // 弹出对话框的时候背景不变暗
popupDialog.show();
}
});
}
}
最后效果如下图:
[img]
[/img]
- 大小: 65.3 KB
分享到:
相关推荐
本文将详细探讨如何实现一个带有三角形指示箭头的对话框,即"带三角的dialog弹出框",并分享相关代码实现。 首先,我们需要理解Android中的Dialog。它是一个轻量级窗口,通常用来显示临时信息或获取用户输入。在...
CSS3是层叠样式表的第三版,提供了许多增强的特性和功能,使得创建动态且富有表现力的对话框变得更为简单。本文将详细介绍如何使用CSS3实现一个具有专业外观的气泡对话框。 首先,我们来理解一下基本的HTML结构。一...
1. **自定义布局**:由于标准的Dialog样式可能无法满足气泡效果,我们需要为Dialog创建一个自定义的布局文件。这个布局应该包含气泡形状的背景、内容文字、箭头指示等元素。可以使用ShapeDrawable来定义气泡的形状,...
在Windows API中,可以使用CreateDialog或DialogBox函数创建对话框,而在Qt框架中,可以使用QDialog类来实现。对于用户输入的验证,对话框通常会在用户尝试关闭或点击“确定”按钮时进行,如果输入无效,会阻止...
在本文中,我们将深入探讨如何使用VC++(Visual C++)来创建一个类似于Word的插入特殊符号对话框。 首先,我们需要理解VC++中的对话框(Dialog Box)机制。VC++提供了MFC(Microsoft Foundation Classes)库,它...
在对话框效果中,SVG 可能被用来创建可缩放的图形元素,如对话框的边框、箭头或者其他装饰性元素。由于 SVG 图形是矢量的,因此它们在不同分辨率和尺寸的屏幕上都能保持清晰,且文件大小相对较小。 在 "dialog-...
在Android开发中,自定义对话框(Custom Dialog)是一种常用的技术,它可以帮助我们根据应用的UI风格和功能需求,创建独特且用户友好的交互界面。本教程将详细讲解如何模仿百度地图的对话框进行自定义设计,以实现...
标题"VC对话框调整大小 右下 控件调整大小"所指的就是这种功能,即当用户通过对话框右下角的调整手柄(通常是一个带有四个箭头的图标)拖动来改变对话框大小时,对话框内的控件能相应地自动调整大小。 实现这一功能...
在Windows编程中,对话框(Dialog Box)是一种用于与用户交互的重要组件,它可以包含各种控件,如按钮、文本框、列表框等。本篇主要关注的是“标签控件(TabControl)”和“属性表(PropertySheet)”,这两种控件在...
"jQuery 提示框"通常指的是使用jQuery来创建的对话框或者提示信息,这些对话框可以是简单的警告消息、确认对话框或者是更复杂的自定义内容框,它们往往带有特定的样式,如标题、箭头指示等,以提升用户体验。...
《使用jQuery jscrollpane.js实现滚动窗口微信聊天对话框》 在网页开发中,创建一个类似于微信聊天对话框的交互式界面是一项常见的需求。为了实现这样的功能,开发者常常会利用JavaScript库,比如jQuery,以及相关...
content: '带有图标的对话框', icon: 'question', arrows: true }); ``` 7. **API 调用** jBox 提供了丰富的 API,可以用于控制对话框的显示、隐藏、更新内容等。例如,动态显示和隐藏对话框: ```...
这个名为"基于jQuery实现对话框美化特效源码.zip"的压缩包文件,显然是为前端开发者提供了一套使用jQuery库来创建具有美化效果的对话框的源代码。下面将详细解释相关知识点。 首先,jQuery是一个广泛使用的...
例如,使用`$.ply.dialog()`方法可以打开一个对话框,并通过参数设置其内容、标题、按钮等属性。 **4. 结构与目录** 在提供的压缩包中,我们可以看到以下几个文件和目录: - `index.html`: 示例页面,展示了Ply的...
在Windows编程领域,对话框(Dialog Box)是用户与应用程序交互的重要界面元素。高级编程涉及到对标准控件的深入理解和自定义,以提供更丰富的用户体验。这篇博客“对话框高级编程——公共控件之一(旋转按钮、滑块...
本主题主要聚焦于如何在对话框(Dialog Box)中实现键盘消息的响应。 在Windows应用程序中,消息循环是程序运行的基础,它不断地检查系统消息队列,处理接收到的消息。当用户按下键盘上的键时,Windows会生成一个WM...
2. **资源文件**:XML文件可能包含对话框的布局定义,如`dialog.xml`,以及图标的资源图片,如箭头图像。这些资源会被Android系统用来构建和显示对话框。 3. **示例应用**:可能有一个简单的Android应用项目,用于...
使用Angular 5 Material可以快速创建具有现代感和一致性的用户界面,同时减少开发工作量。在这个AI应用中,Angular 5 Material可能被用于构建对话框、表单和其他交互元素,以提供良好的用户体验。 **Dialogflow** ...