很多应用中,在点击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();
}
});
}
}
最后效果如下图:
- 大小: 65.3 KB
分享到:
相关推荐
android dialog ——ProgressDialog 进度条对话框详解
VC++源代码 Dialog详解,各种对话框详解。 不错的参考,也可拿来直接饮用。
17. android dialog —— 单选列表对话框 http://blog.csdn.net/jamesliulyc/archive/2011/04/24/6358813.aspx
qml 用item自定义dialog 对话框 很好用的一个自定义对话框
Dialog对话框之android 自定义对话框代码 设置对话框显示一个单选的List 用来设置对话框显示一系列的复选框 设置进度条风格,风格为圆形,旋转的
18. android dialog —— 多选列表对话框 http://blog.csdn.net/jamesliulyc/archive/2011/04/24/6359628.aspx
NULL 博文链接:https://lishuaishuai.iteye.com/blog/1267230
实现了各种Dialog,编写了对话框数据回调接口,封装了一些方法,调用这些方法就可以很方便地生成想要的对话框。
代码 RPG 对话框 RPG Dialog 1.05代码 RPG 对话框 RPG Dialog 1.05代码 RPG 对话框 RPG Dialog 1.05代码 RPG 对话框 RPG Dialog 1.05代码 RPG 对话框 RPG Dialog 1.05代码 RPG 对话框 RPG Dialog 1.05代码 RPG ...
并为给出创建对话框之后 并为给出如何用户获取在对话框中做出选择后的数据 即如何监听用户做出的选择 接下来笔者将根据JavaDoc API文档引导读者详细的了解提示对话框 文本框对话框 简单列表对话框 单选项列表对话框 ...
本程序的功能就是创建一个对话框,进行对话框之间的通信。本程序在VC的环境中调试通过。
SDK下,我们通常用DialogBox来创建模态对话框。DialogBox并不是一个Win32的API,它实际上是一个宏,调用DialogBoxParam来创建对话框。
jQuery通用dialog对话框 popup提示信息窗口插件demo
创建自定义对话框dialog,弹出模式窗口 用于创建自定义对话框的轻量级(约 4.5 KB)代码库。四种对话框可用: alerts(出错), warnings(警告), prompts(提示), success(成功)。利用一个简单的函数,你可以自定义对话框...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
一个不错的弹出对话框,支持多种需求,解决js跨域调用问题,有demo
15. android dialog ——列表对话框
Android Dialog 一般有五种,分别是:一般对话框,列表对话框,单选按钮对话框,多选对话框,自定义对话框。 一般对话框 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.mipmap....
用vc++6.0创建一个A名称MFC(EXE)对话框工程,在对话框上拖放一个按钮控件。 在资源视图上右击Dialog图标插入一个ID:IDD_DIALOG1、Caption名字非模态的对话框。 1、为IDD_DIALOG1对话框新建类名为B。 2、对IDD_DIALOG...