Android弹窗:

在Android中弹出式菜单(以下称弹窗)是使用十分广泛一种菜单呈现的方式,弹窗为用户交互提供了便利。关于弹窗的实现大致有以下两种方式AlertDialogPopupWindow

两者的区别:AlertDialog弹窗在位置显示上是固定的,而PopupWindow则相对比较随意,能够在主屏幕上的任意位置显示; 
今天就简单介绍一下,如何利用PopupWindow实现RecyclerView的自定义的弹窗布局;

使用步骤:

1.创建两个xml文件,一个mainactivity主布局,一个是popupwindow布局(因为我是在项目里写的,所以闲杂代码可能比较多):

主布局(在其写一个Button按钮,因为项目需要,我换成了ImageView):

<LinearLayout
android:id="@+id/score_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:background="#f0f0f0"> <ImageView
android:id="@+id/bttest"
android:layout_width="50dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:src="@mipmap/selectteam" /> </LinearLayout>

popupwindow.xml布局(里面放一个RecyclerView):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"> <android.support.v7.widget.RecyclerView
android:id="@+id/select"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways|snap"> </android.support.v7.widget.RecyclerView> </LinearLayout>

2.在MainActivity中为ImageView进行实例化,并为其设立点击事件:

    bselect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopupWindow();
}
});
private void showPopupWindow() {
View view = LayoutInflater.from(getContext()).inflate(R.layout.popupwindow,null);
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.select);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);
ScoreTeamAdapter scoreTeamAdapter = new ScoreTeamAdapter(yearList);
recyclerView.setAdapter(scoreTeamAdapter);
popupWindow = new PopupWindow(main_layout, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setContentView(view);
popupWindow.setFocusable(true);
popupWindow.showAsDropDown(bselect);
}

showPopupWindow()方法:

1.先将popupwindow.xml布局加载成一个View,并通过该View将RecyclerView进行实例化,然后RecyclerView进行设置,在这设置成竖向排列的线性布局,然后为其设置一个Adapter;

2.随后将popupWindow进行设置:

popupWindow = new PopupWindow(main_layout, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

main_layout是ImageView的父容器LinearLayout, 
第一个ViewGroup.LayoutParams.WRAP_CONTENT是设置popupwindow的宽度,第二个ViewGroup.LayoutParams.WRAP_CONTENT是设置popupwindow的高度;

popupWindow.setContentView(view);

设置popupwindow的布局;

popupWindow.showAsDropDown(bselect);

调用PopupWindow的showAsDropDown(View view)将PopupWindow作为View组件的下拉组件显示出来;或调用PopupWindow的showAtLocation()方法将PopupWindow在指定位置显示出来;

最后的效果如图: 

想了解更多PopupWindow的用法,请看下面的简书: 
http://www.jianshu.com/p/825d1cc9fa79

 
 

PopupWindow的简单使用(结合RecyclerView)的更多相关文章

  1. Android—PopupWindow的简单使用

    PopupWindow 是一个可以显示在当前 Activity 之上的浮动容器,这个Demo要实现的功能是,点击布局中的两个按钮,进而控制PopupWindow的显示与消失,代码中有详细的注释首先看一 ...

  2. Popupwindow 的简单实用,(显示在控件下方)

    第一步: private PopupWindow mPopupWindow; 第二步:写一个popupwindow的布局文件XML <?xml version="1.0" e ...

  3. PopupWindow的简单使用

    测试代码: package com.zzw.testpopuwindows; import android.app.Activity; import android.graphics.Color; i ...

  4. 安卓学习笔记:使用PopupWindow创建简单菜单

    PopupWindow是一个弹出式窗口,它可以展示任意View.他会浮在当前窗口的上方展示. 下面看代码: public class MyActivity extends Activity { pri ...

  5. PopupWindow(2)简单示例-自定义弹出菜单

    本示例,用 popupWindow 自定义弹出菜单 public class CustomActionProvider extends ActionProvider implements OnMenu ...

  6. RecyclerView 下拉刷新上拉加载

    步骤: 首先直接定义一个XRecyclerView继承RecyclerView,重写他的三个构造方法. init(Context mContext)方法用来初始化底部加载的view 回到XRecycl ...

  7. 安卓开发之RecyclerView

    RecyclerView是一个非常好用的控件,它的效果和ListView很相似,甚至可以说RecyclerView的出现是来取代ListView的 RecyclerView比ListView更加灵活, ...

  8. RecyclerView中装饰者模式应用

    近段时间一直在加班,在赶一个项目,现在项目接近尾声,那么需要对过去一段时间工作内容进行复盘,总结下比较好的解决方案,积累一些经验,我认为的学习方式,是「理论-实践-总结-分享」,这一种很好的沉淀方式. ...

  9. RecyclerView 和 ListView 使用对比分析

    原文地址:http://blog.coderclock.com/2016/08/08/android/RecyclerView%20%E5%92%8C%20ListView%20%E4%BD%BF%E ...

随机推荐

  1. pytorch 学习问题

    https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html#sphx-glr-beginner-blitz-n ...

  2. HDOJ-3785 寻找大富翁(优先队列)

    寻找大富翁 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. IIS-设置session时间

    session会话类型

  4. iOS_2_button控制物体形变

    终于效果图: BeyondViewController.h // // BeyondViewController.h // 02_button控制物体形变 // // Created by beyon ...

  5. JS中关于in运算符的问题

    转自:http://bbs.bccn.net/thread-412608-1-1.html in运算符 in运算符虽然也是一个二元运算符,但是对运算符左右两个操作数的要求比较严格.in运算符要求第1个 ...

  6. (算法)Partition方法求数组第k大的数

    如题,下面直接贴出代码: #include <iostream> using namespace std; int Partition(int* A,int left,int right) ...

  7. IOS遇到的问题总结

    1.NSString *path = [[NSBundle mainBundle] pathForResource:@"desc" ofType @"plist" ...

  8. C#.NET常见问题(FAQ)-如何修改代码字体

    工具-选项-字体和颜色     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   我的在线论坛: http://csrob ...

  9. Linux学习笔记--which命令(搜索命令的命令)

    which.哪一个的意思.作用是从PATH环境变量指定的路径中,搜索命令所在位置及命令别名. which命令特点: 1) "which" 命令仅仅能查找系统命令.不能搜索普通文件. ...

  10. php之快速入门学习-2

    创建(声明)PHP 变量 PHP 没有声明变量的命令. 变量在您第一次赋值给它的时候被创建: <?php $txt="Hello world!"; $x=5; $y=10.5 ...