可以先看下效果是不是自己需要的效果

如果是,可以继续往下看了

实现思路就是popwindow +RecyclerView 很是简单 ,这里只是简单的写了下

布局的效果

然后,点就是点击的弹框 ,然后弹框的内容使用recyclerview 来显示就行

没有其他的逻辑,下面看下代码

弹框效果

 popupWindow = new PopupWindow(contentView,LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT, false);popupWindow.setOutsideTouchable(true);popupWindow.setBackgroundDrawable(new BitmapDrawable());popupWindow.setFocusable(true);popupWindow.setAnimationStyle(R.style.popwin_anim_style);popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {@Overridepublic void onDismiss() {}});

然后就是写RecyclerView 了,,我把demo 贴出来把,看一参看下

public class MainActivity extends AppCompatActivity {private LinearLayout ll_list_default;private TextView ll_list_default_txt;private ImageView ll_list_default_icon;private LinearLayout ll_list_brand;private TextView list_brand_txt;private ImageView ll_list_brand_icon;private LinearLayout list_list_type;private TextView list_list_type_txt;private ImageView list_list_type_icon;private RecyclerView recyclerView;private FmmAdapter<String> popAdapter, popAdapter1, popAdapter2;private List<String> popList, popList1, popList2;private PopupWindow popupWindow;private String currentDefault, currentBrand,currentType;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);InitView();ll_list_default = findViewById(R.id.ll_list_default);ll_list_default_txt = findViewById(R.id.ll_list_default_txt);ll_list_default_icon = findViewById(R.id.ll_list_default_icon);ll_list_brand = findViewById(R.id.ll_list_brand);list_brand_txt = findViewById(R.id.list_brand_txt);ll_list_brand_icon = findViewById(R.id.ll_list_brand_icon);list_list_type = findViewById(R.id.list_list_type);list_list_type_txt = findViewById(R.id.list_list_type_txt);list_list_type_icon = findViewById(R.id.list_list_type_icon);ll_list_default.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {ll_list_default_txt.setTextColor(Color.parseColor("#00d8a0"));ll_list_default_icon.setImageResource(R.mipmap.screen_icon_selected);recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));recyclerView.setAdapter(popAdapter);popupWindow.showAsDropDown(ll_list_default);}});ll_list_brand.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {list_brand_txt.setTextColor(Color.parseColor("#00d8a0"));ll_list_brand_icon.setImageResource(R.mipmap.screen_icon_selected);recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));recyclerView.setAdapter(popAdapter1);popupWindow.showAsDropDown(ll_list_default);}});list_list_type.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {list_list_type_txt.setTextColor(Color.parseColor("#00d8a0"));list_list_type_icon.setImageResource(R.mipmap.screen_icon_selected);recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this));recyclerView.setAdapter(popAdapter2);popupWindow.showAsDropDown(ll_list_default);}});}private void InitView() {popList = new ArrayList<>();popList.add("默认排序");popList.add("价格最高");popList.add("价格最低");popList1 = new ArrayList<>();popList1.add("全部");popList1.add("自营");popList1.add("非自营");popList2 = new ArrayList<>();popList2.add("全部");popList2.add("三只松鼠");popList2.add("百草味");popList2.add("良品铺子");popList2.add("好想你");View contentView = getLayoutInflater().inflate(R.layout.popwin_supplier_list, null);popupWindow = new PopupWindow(contentView,LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT, false);popupWindow.setOutsideTouchable(true);popupWindow.setBackgroundDrawable(new BitmapDrawable());popupWindow.setFocusable(true);popupWindow.setAnimationStyle(R.style.popwin_anim_style);popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {@Overridepublic void onDismiss() {}});recyclerView = contentView.findViewById(R.id.popwin_supplier_list_lv);contentView.findViewById(R.id.popwin_supplier_list_bottom).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {popupWindow.dismiss();}});popAdapter = new FmmAdapter<>(R.layout.item_listview_popwin, popList);popAdapter.setOnCallBackData(new FmmAdapter.OnCallBackData<String>() {@Overridepublic void convertView(BaseViewHolder holder, String item) {((TextView) holder.getView(R.id.listview_popwind_tv)).setText(item);if (ll_list_default_txt.getText().toString().trim().equals(item)) {((TextView) holder.getView(R.id.listview_popwind_tv)).setTextColor(Color.parseColor("#00d8a0"));holder.getView(R.id.iv_select_icon).setVisibility(View.VISIBLE);} else {((TextView) holder.getView(R.id.listview_popwind_tv)).setTextColor(Color.parseColor("#333333"));holder.getView(R.id.iv_select_icon).setVisibility(View.GONE);}}});popAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {@Overridepublic void onItemClick(BaseQuickAdapter adapter, View view, int position) {//后期自己做请求处理popupWindow.dismiss();currentDefault = popList.get(position);ll_list_default_txt.setText(currentDefault);}});popAdapter1 = new FmmAdapter<>(R.layout.item_listview_popwin, popList1);popAdapter1.setOnCallBackData(new FmmAdapter.OnCallBackData<String>() {@Overridepublic void convertView(BaseViewHolder holder, String item) {((TextView) holder.getView(R.id.listview_popwind_tv)).setText(item);if (ll_list_default_txt.getText().toString().trim().equals(item)) {((TextView) holder.getView(R.id.listview_popwind_tv)).setTextColor(Color.parseColor("#00d8a0"));holder.getView(R.id.iv_select_icon).setVisibility(View.VISIBLE);} else {((TextView) holder.getView(R.id.listview_popwind_tv)).setTextColor(Color.parseColor("#333333"));holder.getView(R.id.iv_select_icon).setVisibility(View.GONE);}}});popAdapter1.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {@Overridepublic void onItemClick(BaseQuickAdapter adapter, View view, int position) {//后期自己做请求处理popupWindow.dismiss();currentBrand = popList1.get(position);list_brand_txt.setText(currentBrand);}});popAdapter2 = new FmmAdapter<>(R.layout.item_listview_popwin, popList2);popAdapter2.setOnCallBackData(new FmmAdapter.OnCallBackData<String>() {@Overridepublic void convertView(BaseViewHolder holder, String item) {((TextView) holder.getView(R.id.listview_popwind_tv)).setText(item);if (list_list_type_txt.getText().toString().trim().equals(item)) {((TextView) holder.getView(R.id.listview_popwind_tv)).setTextColor(Color.parseColor("#00d8a0"));holder.getView(R.id.iv_select_icon).setVisibility(View.VISIBLE);} else {((TextView) holder.getView(R.id.listview_popwind_tv)).setTextColor(Color.parseColor("#333333"));holder.getView(R.id.iv_select_icon).setVisibility(View.GONE);}}});popAdapter2.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {@Overridepublic void onItemClick(BaseQuickAdapter adapter, View view, int position) {//后期自己做请求处理popupWindow.dismiss();currentType = popList2.get(position);list_list_type_txt.setText(currentType);}});}
}

demo 实现效果,点击跳转到git

android 实现 下拉筛选的效果相关推荐

  1. 仿基金查询输入框下拉筛选值效果(JavaScript)

    http://www.weste.net/2007/11-24/19463143437.html 仿基金查询输入框下拉筛选值效果(JavaScript)

  2. android下拉会谈效果,Android实现下拉展示条目效果

    本文实例为大家分享了Android下拉展示条目的具体代码,供大家参考,具体内容如下 布局文件 xmlns:tools="http://www.easck.com/tools" an ...

  3. android自定义下拉筛选,android自定义Spinner下拉菜单(下拉列表框)样式

    在Android中Spinner就是下拉菜单,它相当于HTML中的标签. Android中提供的Spinner Widget下拉菜单已经非常好用了,样式也适用, 不过我们还是可以通过定义xml的方式来 ...

  4. Android下拉筛选DropDownMenu

    项目下载 项目在GitHub上的地址: https://github.com/Hebin320/DropDownMenu 项目在CSDN上的下载地址: http://download.csdn.net ...

  5. Android模仿QQ的左右滑动切换界面和下拉更新的效果

    转自http://www.linuxidc.com/Linux/2012-08/67207.htm 主布局main.xml <?xml version="1.0" encod ...

  6. android 美团商家详情页,Android仿美团团购详情页下拉图片放大效果,简单可直接用在项目中...

    一:介绍 大家在项目中,可能需要像美团团购详情页面下拉的时候美食图片放大的效果,在这里就给大家介绍如何实现这种效果,只有很少的代码,而且控件全部是安卓源生控件. 二:运行效果图 三.然后来看看如何实现 ...

  7. android 美团下拉刷新,美团外卖下拉刷新效果实现方法

    美团外卖下拉刷新效果实现方法,我们的下拉刷新的效果是在android-Ultra-Pull-To-Refresh框架上做的扩展,这是一款非常强大的下拉刷新框架,有着默认的下拉刷新动画,当然如果我们要实 ...

  8. android listview下拉刷新动画,android 安卓 listview 支持下拉刷新 上拉加载更多

    [1]重写listViewimport java.text.SimpleDateFormat; import java.util.Date; import com.example.testdddlea ...

  9. Android 解决下拉刷新控件和ScrollVIew的滑动冲突问题。

    最近项目要实现ScrollView中嵌套广告轮播图+RecyleView卡片布局,并且RecyleView按照header和内容的排列样式,因为RecyleView的可扩展性很强,所以我毫无疑问的选择 ...

最新文章

  1. 带花树[一般图最大匹配模板]
  2. 从城市大脑到世界数字大脑 构建人类协同发展的超级智能平台
  3. 2012组策略自动部署wsus
  4. Android textview换行
  5. Error:依赖版本不一致
  6. 雷达波形样式_案例分析 | 基于XSIM的雷达电子对抗仿真
  7. [转载]C#实现软件自动更新思路
  8. 小程序获取用户地址信息api
  9. 如何使用加密芯片完成SHA1摘要运算
  10. (转)C# Color类图示
  11. Wise UNpacker 0.91A [with Delphi Source]
  12. 机器学习基础:交叉熵损失(Machine Learning Fundamentals: Cross Entropy Loss)
  13. 微信养鸡领鸡蛋小程序源码
  14. (转)Wap开发FAQ大全
  15. 2022-04-15 redis使用raft协议做主从复制记录
  16. 舒尔特方格训练注意力游戏
  17. Internet Explorer无法打开站点,已终止操作
  18. 循环结构中break、continue、return和exit的区别
  19. 图片化加手动推导深刻记忆冒泡排序全过程
  20. 1. OpenCV 可视化(Viz)——相机位置

热门文章

  1. Go语言的错误异常处理机制及其应用
  2. Python+OpenCV 图像处理系列(2)—— 视频捕获、播放和保存
  3. Apache Maven 安装与配置-修改源
  4. 垃圾回收 内存管理 python
  5. 第25章 Pytorch 如何高效使用GPU
  6. 用TensorRT针对AArch64用户的交叉编译示例
  7. 摄像头和相机模型和内参原理
  8. 2021年大数据常用语言Scala(八):基础语法学习 循环
  9. 2021年大数据Spark(十二):Spark Core的RDD详解
  10. php sql语句去掉重复,sql 去除重复记录的语句