项目作者: Ryan-Shz

项目描述 :
一款仿iOS长按菜单弹窗的自定义控件
高级语言: Java
项目地址: git://github.com/Ryan-Shz/MenuPopupView.git


MenuPopupView

Download

一款仿iOS长按菜单弹窗的自定义控件。

效果图

导入

  1. implementation 'com.ryan.github:menupopupview:1.0.0'

使用

1. 自定义MenuPopupAdapter

  1. public class TestPopupAdapter extends MenuPopupAdapter<String> {
  2. private List<String> mData;
  3. public TestPopupAdapter(List<String> data) {
  4. mData = data;
  5. }
  6. // 返回Item View视图对象
  7. @Override
  8. public View getView(View container, int position) {
  9. View view = LayoutInflater.from(container.getContext()).inflate(R.layout.test_item, null);
  10. TextView tv = (TextView) view.findViewById(R.id.label);
  11. tv.setText(getItem(position));
  12. return view;
  13. }
  14. /**
  15. * 获取item数
  16. *
  17. * @return item数量
  18. */
  19. @Override
  20. public int getItemCount() {
  21. return mData.size();
  22. }
  23. /**
  24. * 获取position位置的数据对象
  25. *
  26. * @param position 位置索引
  27. * @return 数据对象
  28. */
  29. @Override
  30. public String getItem(int position) {
  31. return mData.get(position);
  32. }
  33. }

2. 创建PopupView并指定Adapter

  1. List<String> menus = new ArrayList<>();
  2. menus.add("default");
  3. menus.add("copy");
  4. MenuPopupAdapter<String> adapter = new TestPopupAdapter(menus);
  5. PopupView popupView = new PopupView(this);
  6. popupView.setAdapter(adapter);

3. 设置依附anchor方向并显示

  1. // 显示在anchor底部
  2. popupView.setPopupLocation(PopupLayout.PopupLocation.Bottom);
  3. // 显示在anchor顶部
  4. popupView.setPopupLocation(PopupLayout.PopupLocation.TOP);
  5. // 显示PopupView
  6. popupView.show(v);

4. 动态改变菜单并刷新

  1. adapter.notifyDataSetChanged();

5. 设置分割线颜色

  1. // 设置item的分割线颜色
  2. popupView.setDriverColorResId(int colorResId);
  3. // 设置左右指示器的分割线颜色
  4. popupView.setIndicatorDriverColorResId(int colorResId);