浏览 5544 次
锁定老帖子 主题:用Dialog创建带箭头的对话框
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-07
先选用一个带箭头的图片(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(); } }); } } 最后效果如下图: 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-03-12
你在哪里看到的 PopupWindow 是阻塞式的弹出框?不懂不要乱说啊...
|
|
返回顶楼 | |
发表时间:2012-03-12
Cindy_Lee 写道 你在哪里看到的 PopupWindow 是阻塞式的弹出框?不懂不要乱说啊... http://blog.163.com/freemanls@126/blog/static/16458506120117511148633/ http://liangruijun.blog.51cto.com/3061169/739459 http://www.linuxidc.com/Linux/2012-01/52653.htm …… 太多了,随便一搜一大堆,难道他们都错了? |
|
返回顶楼 | |
发表时间:2012-03-13
superonion 写道 Cindy_Lee 写道 你在哪里看到的 PopupWindow 是阻塞式的弹出框?不懂不要乱说啊...
http://blog.163.com/freemanls@126/blog/static/16458506120117511148633/ http://liangruijun.blog.51cto.com/3061169/739459 http://www.linuxidc.com/Linux/2012-01/52653.htm …… 太多了,随便一搜一大堆,难道他们都错了? 我没有搜,看了一个例子 final Button button = (Button) findViewById(R.id.bn); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 以下拉方式显示。 // popup.showAsDropDown(v); //将PopupWindow显示在指定位置 popup.showAtLocation(findViewById(R.id.bn), Gravity.CENTER, 20, 20); button.setText("hello"); } }); popupwindow弹出后,button的文字就发生了变化,我想听一下解释 |
|
返回顶楼 | |