如图是效果图

   

2种常用PopupWindow的使用

下载地址:http://download.csdn.net/detail/qq_29774291/9683258

第一个展示一个下拉的ListView

  1. /**
  2. * 展示第一个弹窗
  3. */
  4. private ListView mListView;
  5. private String[] itemStrings = {"第一个人啊","第二个人啊","第三个人啊","第四个人啊","第五个人啊","第六个人啊","第七个人啊"};
  6. protected void setOnePoP() {
  7. // TODO Auto-generated method stub
  8. View contentView = View.inflate(this, R.layout.pop_list, null);
  9. if(popup_one == null){
  10. popup_one = new PopupWindow(contentView,btn_one.getWidth(),LayoutParams.WRAP_CONTENT,true);
  11. }
  12. mListView = (ListView)contentView.findViewById(R.id.lv_pop_listview);
  13. mListView.setAdapter(new MyAdapter(MainActivity.this, itemStrings));
  14. popup_one.setFocusable(true);
  15. popup_one.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  16. popup_one.setOutsideTouchable(true);
  17. popup_one.showAsDropDown(btn_one);
  18. }
  19. /**
  20. * ListView的适配器
  21. * @author Administrator
  22. *
  23. */
  24. private class MyAdapter extends BaseAdapter{
  25. private Context mContext;
  26. private String [] item ;
  27.  
  28. public MyAdapter(Context mContext, String[] item) {
  29. this.mContext = mContext;
  30. this.item = item;
  31. }
  32.  
  33. @Override
  34. public int getCount() {
  35. // TODO Auto-generated method stub
  36. return item.length;
  37. }
  38.  
  39. @Override
  40. public Object getItem(int arg0) {
  41. // TODO Auto-generated method stub
  42. return null;
  43. }
  44.  
  45. @Override
  46. public long getItemId(int arg0) {
  47. // TODO Auto-generated method stub
  48. return 0;
  49. }
  50.  
  51. @Override
  52. public View getView(int arg0, View arg1, ViewGroup arg2) {
  53. // TODO Auto-generated method stub
  54. ViewHolder holder = null;
  55. if(arg1 == null){
  56. holder = new ViewHolder();
  57. arg1 = View.inflate(mContext, R.layout.item_list, null);
  58. holder.tv_name = (TextView)arg1.findViewById(R.id.item_tv_formname);
  59. arg1.setTag(holder);
  60. }else {
  61. holder = (ViewHolder)arg1.getTag();
  62. }
  63. holder.tv_name.setText(item[arg0] + "");
  64. return arg1;
  65. }
  66.  
  67. }
  68. static class ViewHolder{
  69. private TextView tv_name;
  70. }

第二个展示在下方展示一个弹窗,并设置屏幕透明度屏幕变暗的效果

代码如下

  1. /**
  2. * 在底部展示一个弹窗,并把界面的颜色变暗
  3. */
  4. protected void setTwoPoP() {
  5. View view = View.inflate(MainActivity.this, R.layout.pop_two, null);
  6. if(popup_two == null){
  7. popup_two = new PopupWindow(view,LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT,true);
  8. }
  9. Button btn_dis = (Button)view.findViewById(R.id.btn_dis);
  10. btn_dis.setOnClickListener(new View.OnClickListener() {
  11.  
  12. @Override
  13. public void onClick(View arg0) {
  14. // TODO Auto-generated method stub
  15. if(popup_two !=null && popup_two.isShowing()){
  16. popup_two.dismiss();
  17. backgroundAlpha(1f);
  18. }
  19. }
  20. });
  21. popup_two.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  22. //展示一个动画
  23. popup_two.setAnimationStyle(R.style.popWindow_anim_style);
  24. popup_two.setFocusable(true);
  25. popup_two.setOutsideTouchable(true);
  26. backgroundAlpha(0.5f);
  27. popup_two.showAtLocation(MainActivity.this.getWindow().getDecorView(), Gravity.BOTTOM, 0, 0);
  28. popup_two.setOnDismissListener(new PopupWindow.OnDismissListener() {
  29.  
  30. @Override
  31. public void onDismiss() {
  32. // TODO Auto-generated method stub
  33. backgroundAlpha(1f);
  34. }
  35. });
  36. }
  37. /**
  38. * 设置添加屏幕的背景透明度
  39. * @param bgAlpha
  40. */
  41. public void backgroundAlpha(float bgAlpha)
  42. {
  43. this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
  44. WindowManager.LayoutParams lp = this.getWindow().getAttributes();
  45. lp.alpha = bgAlpha;
  46. this.getWindow().setAttributes(lp);
  47. }

第三对于第2中效过,用Dialog也可以实现,需要设置Dialog在屏幕的位置,不过用Dialog实现时,屏幕有渐变的效果不是一下变暗

  1. /**
  2. * 显示一个弹窗
  3. */
  4. @SuppressWarnings("deprecation")
  5. private void showDialog(){
  6. View view = View.inflate(PhotoActivity.this, R.layout.choose_photo_dialog, null);
  7. final Dialog dialog = new Dialog(this, R.style.Dialog);
  8. dialog.setContentView(view,new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
  9. Window window = dialog.getWindow();
  10. window.setWindowAnimations(R.style.main_menu_animstyle);
  11. WindowManager.LayoutParams wl = window.getAttributes();
  12. wl.x = 0;
  13. wl.y = getWindowManager().getDefaultDisplay().getHeight();
  14. wl.width = ViewGroup.LayoutParams.MATCH_PARENT;
  15. wl.height = ViewGroup.LayoutParams.WRAP_CONTENT;
  16. dialog.onWindowAttributesChanged(wl);
  17. dialog.setCanceledOnTouchOutside(true);
  18. dialog.show();
  19. }

其中在TextView下展示添加一个下划线

这个效果是使用图层来实现的

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <!-- 边框颜色值 -->
  4. <item>
  5. <shape>
  6. <solid android:color="#3547B1"/>
  7. </shape>
  8. </item>
  9. <!-- 主体背景颜色值 -->
  10. <item android:bottom="2dp">
  11. <shape>
  12. <solid android:color="#ffffff"/>
  13. <padding
  14. android:bottom="10dp"
  15. android:left="10dp"
  16. android:right="10dp"
  17. android:top="10dp"/>
  18. </shape>
  19. </item>
  20. </layer-list>

补充:

在一个TextView展示2种颜色,大小不同的文本也可以用富文本控间

  1. SpannableString test = new SpannableString("我的评语:这个不是的发生的发生的发生的冯绍峰sdfsdf是打发斯蒂芬谁发的");
  2. test.setSpan(new TextAppearanceSpan(this, R.style.textone), 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  3. test.setSpan(new TextAppearanceSpan(this, R.style.texttwo), 5, test.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  4. tv_text.setText(test);
  1. <style name="textone">
  2. <item name="android:textSize">16sp</item>
  3. <item name="android:textColor">#000</item>
  4. </style>
  5. <style name="texttwo">
  6. <item name="android:textSize">14sp</item>
  7. <item name="android:textColor">#f00</item>
  8. </style>

PopupWindow的使用的更多相关文章

  1. Android PopupWindow Dialog 关于 is your activity running 崩溃详解

    Android PopupWindow Dialog 关于 is your activity running 崩溃详解 [TOC] 起因 对于 PopupWindow Dialog 需要 Activi ...

  2. Android popupwindow使用心得(一)

    最近项目中好多地方用到popupwindow,感觉这个控件还是非常重要的.所以把使用心得总结下,废话不多说,直接上代码. public class MainActivity extends Activ ...

  3. 不得不吐槽的Android PopupWindow的几个痛点(实现带箭头的上下文菜单遇到的坑)

    说到PopupWindow,我个人感觉是又爱又恨,没有深入使用之前总觉得这个东西应该很简单,很好用,但是真正使用PopupWindow实现一些效果的时候总会遇到一些问题,但是即便是人家的api有问题, ...

  4. 仿QQ空间根据位置弹出PopupWindow显示更多操作效果

    我们打开QQ空间的时候有个箭头按钮点击之后弹出PopupWindow会根据位置的变化显示在箭头的上方还是下方,比普通的PopupWindow弹在屏幕中间显示好看的多. 先看QQ空间效果图:       ...

  5. 自定义PopupWindow

    PopupWindow,一个弹出窗口控件,可以用来显示任意View,而且会浮动在当前activity的顶部 自定义PopupWindow. 1.extends PopupWindow 2.构造方法中可 ...

  6. PopupWindow 使用

    昨天马失前蹄,为了做一个小键盘,耽误了两个小时,记录一下心路历程 1.关于需求与选择 需求: 点击一个按钮,弹出一个小键盘(类似于输入法键盘) 选择: (1)方案一:KeyboardView 这是百度 ...

  7. popupwindow的基本使用以及基本动画效果

    1.创建一个popupwindow view的布局文件自己写一个就好了,这里就不说了 View view= LayoutInflater.from(context).inflate(R.layout. ...

  8. Android -- PopupWindow(其中嵌套ListView 可以被点击)

    1. 效果图

  9. Android开发学习之路-PopupWindow和仿QQ左滑删除

    这周作业,要做一个类似QQ的左滑删除效果的ListView,因为不想给每个item都放一个按钮,所以决定用PopupWindow,这里记录一下 先放一下效果图: 先说明一下这里面的问题: ①没有做到像 ...

  10. android标题栏上面弹出提示框(二) PopupWindow实现,带动画效果

    需求:上次用TextView写了一个从标题栏下面弹出的提示框.android标题栏下面弹出提示框(一) TextView实现,带动画效果,  总在找事情做的产品经理又提出了奇葩的需求.之前在通知栏显示 ...

随机推荐

  1. C# WebBrowser 获得选中部分的html源码

    Winform程序 2.0的. 需要引用Microsoft.mshtml. private void Form1_Load(object sender, EventArgs e) { webBrows ...

  2. salesforce 零基础学习(四十)Custom Settings简单使用

    有时候,项目中我们需要设置类似白名单的功能,即某些用户或者某种Profile的用户不走一些校验或者走一些校验,这时,使用Custom Settings功能可以很好的解决这一需求. Custom Set ...

  3. 每天一个linux命令(30): chown命令

    chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符.系统管理员经常使用chown命令,在将文件拷贝 ...

  4. Mybatis的缺陷

    Mybatis是业界非常流行的持久层框架,轻量级.易用,在金融IT领域完全是领军地位,比Hibernate更受欢迎,优势非常多,也是非常值得我们学习的.但Mybatis并不尽善尽美,其自身的设计.编码 ...

  5. 快速入门系列--CLR--03泛型集合

    .NET中的泛型集合 在这里主要介绍常见的泛型集合,很多时候其并发时的线程安全性常常令我们担忧.因而简述下.NET并发时线程安全特性,其详情请见MSDN. 普通集合都不支持多重并发写操作 部分支持单线 ...

  6. 深入理解PHP内核(九)变量及数据类型-静态变量

    原文链接:http://www.orlion.ga/251/ 通常静态变量是静态分配的,他们的生命周期和程序的生命周期一样长,只有在程序退出后才结束生命周期,这和局部变量相反,有的语言中全局变量也是静 ...

  7. codeforces Soldier and Number Game(dp+素数筛选)

    D. Soldier and Number Game time limit per test3 seconds memory limit per test256 megabytes inputstan ...

  8. backbone库学习-View

    Backbone中的视图提供了一组处理DOM事件.和渲染模型(或集合)数据方法(在使用视图之前,你必须先导入jQuery或Zepto) 视图类提供的方法非常简单,我们一般在backbone.View的 ...

  9. 30套免费的响应式 HTML5 & CSS3 模板下载

    HTML5 和 CSS3 网站模板存在巨大的需求,网页设计师们都喜欢现成的网站模板,能够轻松地设计和开发美观,吸引眼球的网站.如果你正在寻找响应式的 HTML5 & CSS3 模板,那么你找对 ...

  10. web前端学习笔记(CSS变化宽度布局)

    一.“1-2-1”单列变宽布局: 对于变宽度的布局,首先要使内容的整体宽度随浏览器窗口宽度的变化而变化.因此中间的container容器中的左右两列的总宽度也会变化,这样就会产生不同的情况.这两列是按 ...