`
superonion
  • 浏览: 128178 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

用Dialog创建带箭头的对话框

阅读更多
      很多应用中,在点击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
0
1
分享到:
评论

相关推荐

    带三角的dialog弹出框

    本文将详细探讨如何实现一个带有三角形指示箭头的对话框,即"带三角的dialog弹出框",并分享相关代码实现。 首先,我们需要理解Android中的Dialog。它是一个轻量级窗口,通常用来显示临时信息或获取用户输入。在...

    css3实现气泡对话框

    CSS3是层叠样式表的第三版,提供了许多增强的特性和功能,使得创建动态且富有表现力的对话框变得更为简单。本文将详细介绍如何使用CSS3实现一个具有专业外观的气泡对话框。 首先,我们来理解一下基本的HTML结构。一...

    用Dialog实现的主动弹出式气泡

    1. **自定义布局**:由于标准的Dialog样式可能无法满足气泡效果,我们需要为Dialog创建一个自定义的布局文件。这个布局应该包含气泡形状的背景、内容文字、箭头指示等元素。可以使用ShapeDrawable来定义气泡的形状,...

    这是一个关于滚动条和对话框的范例

    在Windows API中,可以使用CreateDialog或DialogBox函数创建对话框,而在Qt框架中,可以使用QDialog类来实现。对于用户输入的验证,对话框通常会在用户尝试关闭或点击“确定”按钮时进行,如果输入无效,会阻止...

    类似于Word的插入特殊符号对话框

    在本文中,我们将深入探讨如何使用VC++(Visual C++)来创建一个类似于Word的插入特殊符号对话框。 首先,我们需要理解VC++中的对话框(Dialog Box)机制。VC++提供了MFC(Microsoft Foundation Classes)库,它...

    dialog-effects:Meteor Codrops 对话框效果

    在对话框效果中,SVG 可能被用来创建可缩放的图形元素,如对话框的边框、箭头或者其他装饰性元素。由于 SVG 图形是矢量的,因此它们在不同分辨率和尺寸的屏幕上都能保持清晰,且文件大小相对较小。 在 "dialog-...

    android模仿百度地图自定义对话框

    在Android开发中,自定义对话框(Custom Dialog)是一种常用的技术,它可以帮助我们根据应用的UI风格和功能需求,创建独特且用户友好的交互界面。本教程将详细讲解如何模仿百度地图的对话框进行自定义设计,以实现...

    VC对话框调整大小 右下 控件调整大小

    标题"VC对话框调整大小 右下 控件调整大小"所指的就是这种功能,即当用户通过对话框右下角的调整手柄(通常是一个带有四个箭头的图标)拖动来改变对话框大小时,对话框内的控件能相应地自动调整大小。 实现这一功能...

    对话框高级编程---公共控件之二(标签控件和属性表)

    在Windows编程中,对话框(Dialog Box)是一种用于与用户交互的重要组件,它可以包含各种控件,如按钮、文本框、列表框等。本篇主要关注的是“标签控件(TabControl)”和“属性表(PropertySheet)”,这两种控件在...

    jquery 提示框

    "jQuery 提示框"通常指的是使用jQuery来创建的对话框或者提示信息,这些对话框可以是简单的警告消息、确认对话框或者是更复杂的自定义内容框,它们往往带有特定的样式,如标题、箭头指示等,以提升用户体验。...

    jquery jscrollpane.js滚动窗口微信聊天对话框

    《使用jQuery jscrollpane.js实现滚动窗口微信聊天对话框》 在网页开发中,创建一个类似于微信聊天对话框的交互式界面是一项常见的需求。为了实现这样的功能,开发者常常会利用JavaScript库,比如jQuery,以及相关...

    共享一款基于 jQuery 的多功能对话框插件 jBox

    content: '带有图标的对话框', icon: 'question', arrows: true }); ``` 7. **API 调用** jBox 提供了丰富的 API,可以用于控制对话框的显示、隐藏、更新内容等。例如,动态显示和隐藏对话框: ```...

    基于jQuery实现对话框美化特效源码.zip

    这个名为"基于jQuery实现对话框美化特效源码.zip"的压缩包文件,显然是为前端开发者提供了一套使用jQuery库来创建具有美化效果的对话框的源代码。下面将详细解释相关知识点。 首先,jQuery是一个广泛使用的...

    跨浏览器模态窗口|对话框|提示框插件

    例如,使用`$.ply.dialog()`方法可以打开一个对话框,并通过参数设置其内容、标题、按钮等属性。 **4. 结构与目录** 在提供的压缩包中,我们可以看到以下几个文件和目录: - `index.html`: 示例页面,展示了Ply的...

    对话框高级编程---公共控件之一(旋转按钮、滑块和进度条)

    在Windows编程领域,对话框(Dialog Box)是用户与应用程序交互的重要界面元素。高级编程涉及到对标准控件的深入理解和自定义,以提供更丰富的用户体验。这篇博客“对话框高级编程——公共控件之一(旋转按钮、滑块...

    VC++消息映射与处理\在对话框中实现键盘消息响应

    本主题主要聚焦于如何在对话框(Dialog Box)中实现键盘消息的响应。 在Windows应用程序中,消息循环是程序运行的基础,它不断地检查系统消息队列,处理接收到的消息。当用户按下键盘上的键时,Windows会生成一个WM...

    IndicatorDialog,中国汽车工业股份有限公司.zip

    2. **资源文件**:XML文件可能包含对话框的布局定义,如`dialog.xml`,以及图标的资源图片,如箭头图像。这些资源会被Android系统用来构建和显示对话框。 3. **示例应用**:可能有一个简单的Android应用项目,用于...

    Angular5AI包含Angular5Material和Dialogflow的一个小型AI应用

    使用Angular 5 Material可以快速创建具有现代感和一致性的用户界面,同时减少开发工作量。在这个AI应用中,Angular 5 Material可能被用于构建对话框、表单和其他交互元素,以提供良好的用户体验。 **Dialogflow** ...

Global site tag (gtag.js) - Google Analytics