当前位置:   article > 正文

117.Android 简单的拖拽列表+防止越界拖动(BaseRecyclerViewAdapterHelper) 两种方式实现_android 拖动的list

android 拖动的list

 //一.第一种方式 通过BaseItemDraggableAdapter类和其提供的的拖拽监听实现:

//1.第一步 导入依赖库和权限:

//依赖库:

  1. //RecyclerView
  2. implementation 'com.android.support:recyclerview-v7:28.0.0'
  3. //RecyclerAdapter
  4. implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28'

//用到的权限:

  1. <!--振动-->
  2. <uses-permission android:name="android.permission.VIBRATE" />

 //2.第二步 新建ItemDraggableActivity页面:

//manifest注册:

  1. <activity
  2. android:name=".phone.activity.ItemDraggableActivity"
  3. android:launchMode="singleTop"
  4. android:screenOrientation="portrait"
  5. android:windowSoftInputMode="stateHidden"
  6. tools:ignore="LockedOrientationActivity" />

//activity代码:

  1. /**
  2. * @author CJF
  3. */
  4. public class ItemDraggableActivity extends AppCompatActivity implements BaseQuickAdapter.OnItemChildClickListener, View.OnClickListener {
  5. private final GridLayoutManager manager = new GridLayoutManager(this, 3);
  6. private final ItemDraggableAdapter adapter = new ItemDraggableAdapter(R.layout.item_draggable_item, new ArrayList<>());
  7. /**
  8. * 震动时长(毫秒)
  9. */
  10. private final int milliseconds = 50;
  11. private Vibrator vibrator;
  12. private RecyclerView mTreeListRecy;
  13. private TextView mEdit;
  14. @Override
  15. protected void onCreate(@Nullable Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_tree_list);
  18. //点击音效
  19. vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
  20. mTreeListRecy = findViewById(R.id.mTreeListRecy);
  21. mEdit = findViewById(R.id.mEdit);
  22. mEdit.setOnClickListener(this);
  23. mTreeListRecy.setLayoutManager(manager);
  24. mTreeListRecy.setAdapter(adapter);
  25. DragAndSwipeCallback itemDragAndSwipeCallback = new DragAndSwipeCallback(adapter);
  26. ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemDragAndSwipeCallback);
  27. itemTouchHelper.attachToRecyclerView(mTreeListRecy);
  28. //可以不用设置,可以拖拽的方向,默认上下左右
  29. itemDragAndSwipeCallback.setDragMoveFlags(ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);
  30. // 开启拖拽 设置可拖拽item的根布局id
  31. adapter.enableDragItem(itemTouchHelper, R.id.mItemDraggableItemLin, true);
  32. adapter.setOnItemDragListener(onItemDragListener);
  33. // 开启滑动删除
  34. // adapter.enableSwipeItem();
  35. // adapter.setOnItemSwipeListener(onItemSwipeListener);
  36. adapter.setOnItemChildClickListener(this);
  37. List<ItemDraggableBean> list = new ArrayList<>();
  38. for (int i = 0; i < 10; i++) {
  39. ItemDraggableBean bean = new ItemDraggableBean();
  40. bean.setName("数据" + i);
  41. list.add(bean);
  42. }
  43. adapter.addData(list);
  44. }
  45. /**
  46. * 拖拽监听
  47. */
  48. private OnItemDragListener onItemDragListener = new OnItemDragListener() {
  49. @Override
  50. public void onItemDragStart(RecyclerView.ViewHolder viewHolder, int pos) {
  51. Log.e("TAG1231", "onItemDragStart" + "你在拖拽第" + (pos + 1) + "个位置的item哦!");
  52. //震动
  53. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  54. vibrator.vibrate(VibrationEffect.createOneShot(milliseconds, VibrationEffect.DEFAULT_AMPLITUDE));
  55. } else {
  56. vibrator.vibrate(milliseconds);
  57. }
  58. //按住变大
  59. viewHolder.itemView.setScaleX(1.2f);
  60. viewHolder.itemView.setScaleY(1.2f);
  61. viewHolder.itemView.setAlpha(0.5f);
  62. //改变数据状态
  63. ItemDraggableBean draggableBean = adapter.getData().get(pos);
  64. if (!draggableBean.isShow()) {
  65. List<ItemDraggableBean> data = adapter.getData();
  66. for (ItemDraggableBean bean : data) {
  67. bean.setShow(true);
  68. }
  69. //循环遍历出所有的item布局 并显示图片
  70. //注意不可以直接使用 adapter.notifyDataSetChanged();数据刷新会导致直接调用onItemDragEnd()方法
  71. for (int i = 0; i < mTreeListRecy.getChildCount(); i++) {
  72. View childAt = mTreeListRecy.getChildAt(i);
  73. TextView textView = childAt.findViewById(R.id.mItemDraggableItemText);
  74. View view = childAt.findViewById(R.id.mItemDraggableItemImg);
  75. view.setVisibility(View.VISIBLE);
  76. Log.e("TAG1231", "textView:" + textView.getText().toString());
  77. }
  78. mEdit.setText("完成");
  79. }
  80. }
  81. @Override
  82. public void onItemDragMoving(RecyclerView.ViewHolder source, int from, RecyclerView.ViewHolder target, int to) {
  83. Log.e("TAG1231", "onItemDragMoving");
  84. }
  85. @Override
  86. public void onItemDragEnd(RecyclerView.ViewHolder viewHolder, int pos) {
  87. Log.e("TAG1231", "onItemDragEnd" + "拖拽到了第" + (pos + 1) + "个位置哦!");
  88. //变回原来大小
  89. viewHolder.itemView.setScaleX(1.0f);
  90. viewHolder.itemView.setScaleY(1.0f);
  91. viewHolder.itemView.setAlpha(1.0f);
  92. }
  93. };
  94. OnItemSwipeListener onItemSwipeListener = new OnItemSwipeListener() {
  95. @Override
  96. public void onItemSwipeStart(RecyclerView.ViewHolder viewHolder, int pos) {
  97. ToastUtil.getInstance().showToast("继续向左滑动即可删除第" + (pos + 1) + "个位置的item");
  98. }
  99. @Override
  100. public void clearView(RecyclerView.ViewHolder viewHolder, int pos) {
  101. }
  102. @Override
  103. public void onItemSwiped(RecyclerView.ViewHolder viewHolder, int pos) {
  104. ToastUtil.getInstance().showToast("删除了第" + (pos + 1) + "个位置的item哦");
  105. }
  106. @Override
  107. public void onItemSwipeMoving(Canvas canvas, RecyclerView.ViewHolder viewHolder, float dX, float dY, boolean isCurrentlyActive) {
  108. }
  109. };
  110. @Override
  111. public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
  112. adapter.remove(position);
  113. }
  114. @Override
  115. public void onClick(View v) {
  116. switch (v.getId()) {
  117. case R.id.mEdit:
  118. boolean isEdit = "编辑".equals(mEdit.getText().toString());
  119. List<ItemDraggableBean> data = adapter.getData();
  120. for (ItemDraggableBean bean : data) {
  121. bean.setShow(isEdit);
  122. }
  123. adapter.notifyDataSetChanged();
  124. mEdit.setText(isEdit ? "完成" : "编辑");
  125. break;
  126. default:
  127. break;
  128. }
  129. }
  130. }

//3.第三步 新建DragAndSwipeCallback类继承ItemDragAndSwipeCallback,重写onChildDraw 防止越界拖动:

  1. /**
  2. * @author CJF
  3. * 重写onChildDraw 防止越界拖动
  4. */
  5. public class DragAndSwipeCallback extends ItemDragAndSwipeCallback {
  6. public DragAndSwipeCallback(BaseItemDraggableAdapter adapter) {
  7. super(adapter);
  8. }
  9. /**
  10. * 重写onChildDraw 防止越界拖动
  11. *
  12. * @param c
  13. * @param recyclerView
  14. * @param viewHolder
  15. * @param dX
  16. * @param dY
  17. * @param actionState
  18. * @param isCurrentlyActive
  19. */
  20. @Override
  21. public void onChildDraw(@NonNull Canvas c, @NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
  22. float topY = viewHolder.itemView.getTop() + dY;
  23. float bottomY = topY + viewHolder.itemView.getHeight();
  24. float leftX = viewHolder.itemView.getLeft() + dX;
  25. float rightX = leftX + viewHolder.itemView.getWidth();
  26. if (topY < 0) {
  27. dY = 0;
  28. } else if (bottomY > recyclerView.getHeight()) {
  29. dY = recyclerView.getHeight() - viewHolder.itemView.getHeight() - viewHolder.itemView.getTop();
  30. }
  31. if (leftX < 0) {
  32. dX = viewHolder.itemView.getWidth() - viewHolder.itemView.getRight();
  33. } else if (rightX > recyclerView.getWidth()) {
  34. dX = recyclerView.getWidth() - viewHolder.itemView.getWidth() - viewHolder.itemView.getLeft();
  35. }
  36. super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
  37. }
  38. }

//4.第四步 新建ItemDraggableAdapter适配器类:

  1. /**
  2. * @author CJF
  3. */
  4. public class ItemDraggableAdapter extends BaseItemDraggableAdapter<ItemDraggableBean, BaseViewHolder> {
  5. public ItemDraggableAdapter(List<ItemDraggableBean> data) {
  6. super(data);
  7. }
  8. public ItemDraggableAdapter(int layoutResId, List<ItemDraggableBean> data) {
  9. super(layoutResId, data);
  10. }
  11. @Override
  12. protected void convert(BaseViewHolder helper, ItemDraggableBean item) {
  13. helper.setText(R.id.mItemDraggableItemText, item.getName());
  14. helper.setGone(R.id.mItemDraggableItemImg, item.isShow());
  15. helper.addOnClickListener(R.id.mItemDraggableItemImg);
  16. }
  17. }

//5.第五步 新建ItemDraggableBean类:

  1. /**
  2. * @author CJF
  3. */
  4. public class ItemDraggableBean {
  5. private String name;
  6. private boolean isShow = false;
  7. public ItemDraggableBean() {
  8. }
  9. public ItemDraggableBean(String name, boolean isShow) {
  10. this.name = name;
  11. this.isShow = isShow;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public boolean isShow() {
  20. return isShow;
  21. }
  22. public void setShow(boolean show) {
  23. isShow = show;
  24. }
  25. }

//6.第六步 各个xml布局文件以及svg图片文件:

//activity_tree_list:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. xmlns:app="http://schemas.android.com/apk/res-auto"
  6. android:background="@color/color_white"
  7. android:orientation="vertical">
  8. <TextView
  9. android:id="@+id/mEdit"
  10. android:background="@drawable/selector_common_item"
  11. android:textColor="@color/colorAccent"
  12. android:textStyle="bold"
  13. android:textSize="18sp"
  14. android:gravity="center"
  15. android:text="编辑"
  16. android:layout_width="match_parent"
  17. android:layout_height="wrap_content"/>
  18. <android.support.v7.widget.RecyclerView
  19. android:id="@+id/mTreeListRecy"
  20. android:layout_width="match_parent"
  21. android:layout_height="match_parent" />
  22. </LinearLayout>

//item_draggable_item:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:background="@drawable/bg_search"
  6. android:layout_margin="@dimen/dp_5"
  7. android:id="@+id/mItemDraggableItemLin"
  8. android:orientation="horizontal">
  9. <TextView
  10. android:id="@+id/mItemDraggableItemText"
  11. android:layout_width="0dp"
  12. android:layout_height="wrap_content"
  13. android:layout_weight="1"
  14. android:gravity="left|center_vertical"
  15. android:minHeight="@dimen/dp_50"
  16. android:padding="@dimen/dp_10"
  17. android:text="text"
  18. android:textColor="@color/black"
  19. android:textSize="@dimen/sp_15" />
  20. <ImageView
  21. android:scaleType="center"
  22. android:id="@+id/mItemDraggableItemImg"
  23. android:src="@drawable/crm_close"
  24. android:layout_width="@dimen/dp_50"
  25. android:layout_height="match_parent"/>
  26. </LinearLayout>

//svg图片文件  crm_close:

  1. <vector xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:width="24dp"
  3. android:height="24dp"
  4. android:viewportWidth="24.0"
  5. android:viewportHeight="24.0">
  6. <path
  7. android:fillColor="#FF000000"
  8. android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
  9. </vector>

//二.第二种方式 通过继承ItemTouchHelper.Callback类重写几个方法实现:

//1.第一步 导入依赖库:

  1. //RecyclerView
  2. implementation 'com.android.support:recyclerview-v7:28.0.0'
  3. //RecyclerAdapter
  4. implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28'

//2.第二步 新建ItemDraggableActivity页面:

//manifest注册:

  1. <activity
  2. android:name=".phone.activity.ItemDraggableActivity"
  3. android:launchMode="singleTop"
  4. android:screenOrientation="portrait"
  5. android:windowSoftInputMode="stateHidden"
  6. tools:ignore="LockedOrientationActivity" />

//activity代码:

  1. /**
  2. * @author CJF
  3. */
  4. public class ItemDraggableActivity extends AppCompatActivity implements BaseQuickAdapter.OnItemChildClickListener, BaseQuickAdapter.OnItemLongClickListener {
  5. private final GridLayoutManager manager = new GridLayoutManager(this, 3);
  6. private final ItemDraggableAdapter adapter = new ItemDraggableAdapter(R.layout.item_draggable_item);
  7. private RecyclerView mTreeListRecy;
  8. @Override
  9. protected void onCreate(@Nullable Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_tree_list);
  12. mTreeListRecy = findViewById(R.id.mTreeListRecy);
  13. mTreeListRecy.setLayoutManager(manager);
  14. mTreeListRecy.setAdapter(adapter);
  15. adapter.setOnItemChildClickListener(this);
  16. adapter.setOnItemLongClickListener(this);
  17. //列表上下左右拖拽滑动
  18. AdapterTouchHelper adapterTouchHelper = new AdapterTouchHelper(mTreeListRecy, adapter);
  19. List<ItemDraggableBean> list = new ArrayList<>();
  20. for (int i = 0; i < 10; i++) {
  21. ItemDraggableBean bean = new ItemDraggableBean();
  22. bean.setName("数据" + i);
  23. list.add(bean);
  24. }
  25. adapter.addData(list);
  26. }
  27. @Override
  28. public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
  29. adapter.remove(position);
  30. }
  31. @Override
  32. public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {
  33. //改变数据状态
  34. ItemDraggableBean draggableBean = (ItemDraggableBean) adapter.getData().get(position);
  35. if (!draggableBean.isShow()) {
  36. List<ItemDraggableBean> data = adapter.getData();
  37. for (ItemDraggableBean bean : data) {
  38. bean.setShow(true);
  39. }
  40. //循环遍历出所有的item布局 并显示图片
  41. //注意不可以直接使用 adapter.notifyDataSetChanged();数据刷新会导致直接结束滑动
  42. for (int i = 0; i < mTreeListRecy.getChildCount(); i++) {
  43. View childAt = mTreeListRecy.getChildAt(i);
  44. TextView textView = childAt.findViewById(R.id.mItemDraggableItemText);
  45. View mItemDraggableItemImg = childAt.findViewById(R.id.mItemDraggableItemImg);
  46. mItemDraggableItemImg.setVisibility(View.VISIBLE);
  47. Log.e("TAG1231", "textView:" + textView.getText().toString());
  48. }
  49. }
  50. return false;
  51. }
  52. }

//3.第三步 新建ItemDraggableAdapter适配器:

  1. /**
  2. * @author CJF
  3. */
  4. public class ItemDraggableAdapter extends BaseQuickAdapter<ItemDraggableBean, BaseViewHolder> {
  5. public ItemDraggableAdapter(int layoutResId) {
  6. super(layoutResId);
  7. }
  8. @Override
  9. protected void convert(BaseViewHolder helper, ItemDraggableBean item) {
  10. helper.setText(R.id.mItemDraggableItemText, item.getName());
  11. helper.setGone(R.id.mItemDraggableItemImg, item.isShow());
  12. helper.addOnClickListener(R.id.mItemDraggableItemImg);
  13. }
  14. }

//4.第四步 新建AdapterTouchHelper类继承ItemTouchHelper.Callback实现核心功能:

  1. /**
  2. * @author CJF
  3. * 列表上下左右拖拽滑动
  4. */
  5. public class AdapterTouchHelper extends ItemTouchHelper.Callback {
  6. private BaseQuickAdapter adapter;
  7. public AdapterTouchHelper(RecyclerView recyclerView, BaseQuickAdapter adapter) {
  8. this.adapter = adapter;
  9. //用Callback构造ItemtouchHelper
  10. ItemTouchHelper touchHelper = new ItemTouchHelper(this);
  11. //调用ItemTouchHelper的attachToRecyclerView方法建立联系
  12. touchHelper.attachToRecyclerView(recyclerView);
  13. }
  14. @Override
  15. public int getMovementFlags(@NotNull RecyclerView recyclerView, @NotNull RecyclerView.ViewHolder viewHolder) {
  16. //允许上下拖动
  17. int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
  18. return makeMovementFlags(dragFlags, 0);
  19. }
  20. @Override
  21. public boolean isLongPressDragEnabled() {
  22. return true;
  23. }
  24. /**
  25. * Item进行上下移动从旧的位置到新的位置的时候会调用该方法
  26. *
  27. * @param recyclerView
  28. * @param viewHolder 旧位置
  29. * @param target 目标位置
  30. * @return
  31. */
  32. @Override
  33. public boolean onMove(@NotNull RecyclerView recyclerView, @NotNull RecyclerView.ViewHolder viewHolder, @NotNull RecyclerView.ViewHolder target) {
  34. //交换位置
  35. Collections.swap(adapter.getData(), viewHolder.getAdapterPosition(), target.getAdapterPosition());
  36. adapter.notifyItemMoved(viewHolder.getAdapterPosition(), target.getAdapterPosition());
  37. return true;
  38. }
  39. /**
  40. * Item左右移动达到条件时时,会调用该方法
  41. *
  42. * @param viewHolder
  43. * @param direction
  44. */
  45. @Override
  46. public void onSwiped(@NotNull RecyclerView.ViewHolder viewHolder, int direction) {
  47. }
  48. /**
  49. * 重写onChildDraw 防止越界拖动
  50. *
  51. * @param c
  52. * @param recyclerView
  53. * @param viewHolder
  54. * @param dX
  55. * @param dY
  56. * @param actionState
  57. * @param isCurrentlyActive
  58. */
  59. @Override
  60. public void onChildDraw(@NotNull Canvas c, @NotNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
  61. float topY = viewHolder.itemView.getTop() + dY;
  62. float bottomY = topY + viewHolder.itemView.getHeight();
  63. float leftX = viewHolder.itemView.getLeft() + dX;
  64. float rightX = leftX + viewHolder.itemView.getWidth();
  65. if (topY < 0) {
  66. dY = 0;
  67. } else if (bottomY > recyclerView.getHeight()) {
  68. dY = recyclerView.getHeight() - viewHolder.itemView.getHeight() - viewHolder.itemView.getTop();
  69. }
  70. if (leftX < 0) {
  71. dX = viewHolder.itemView.getWidth() - viewHolder.itemView.getRight();
  72. } else if (rightX > recyclerView.getWidth()) {
  73. dX = recyclerView.getWidth() - viewHolder.itemView.getWidth() - viewHolder.itemView.getLeft();
  74. }
  75. super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
  76. }
  77. @Override
  78. public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
  79. //开始按住滑动
  80. if (actionState == ItemTouchHelper.ACTION_STATE_DRAG) {
  81. //按住变大
  82. viewHolder.itemView.setScaleX(1.2f);
  83. viewHolder.itemView.setScaleY(1.2f);
  84. viewHolder.itemView.setAlpha(0.5f);
  85. }
  86. super.onSelectedChanged(viewHolder, actionState);
  87. }
  88. @Override
  89. public void clearView(@NotNull RecyclerView recyclerView, @NotNull RecyclerView.ViewHolder viewHolder) {
  90. super.clearView(recyclerView, viewHolder);
  91. //结束按住滑动 变回原来大小
  92. viewHolder.itemView.setScaleX(1.0f);
  93. viewHolder.itemView.setScaleY(1.0f);
  94. viewHolder.itemView.setAlpha(1.0f);
  95. }
  96. }

//5.第五步 新建ItemDraggableBean类:

  1. /**
  2. * @author CJF
  3. */
  4. public class ItemDraggableBean {
  5. private String name;
  6. private boolean isShow = false;
  7. public ItemDraggableBean() {
  8. }
  9. public ItemDraggableBean(String name, boolean isShow) {
  10. this.name = name;
  11. this.isShow = isShow;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public boolean isShow() {
  20. return isShow;
  21. }
  22. public void setShow(boolean show) {
  23. isShow = show;
  24. }
  25. }

//6.第六步 各个xml布局以及svg图片:

//activity_tree_list:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. xmlns:app="http://schemas.android.com/apk/res-auto"
  6. android:background="@color/color_white"
  7. android:orientation="vertical">
  8. <android.support.v7.widget.RecyclerView
  9. android:id="@+id/mTreeListRecy"
  10. android:layout_width="match_parent"
  11. android:layout_height="match_parent" />
  12. </LinearLayout>

//item_draggable_item:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="wrap_content"
  5. android:background="@drawable/bg_search"
  6. android:layout_margin="@dimen/dp_5"
  7. android:id="@+id/mItemDraggableItemLin"
  8. android:orientation="horizontal">
  9. <TextView
  10. android:id="@+id/mItemDraggableItemText"
  11. android:layout_width="0dp"
  12. android:layout_height="wrap_content"
  13. android:layout_weight="1"
  14. android:gravity="left|center_vertical"
  15. android:minHeight="@dimen/dp_50"
  16. android:padding="@dimen/dp_10"
  17. android:text="text"
  18. android:textColor="@color/black"
  19. android:textSize="@dimen/sp_15" />
  20. <ImageView
  21. android:scaleType="center"
  22. android:id="@+id/mItemDraggableItemImg"
  23. android:src="@drawable/crm_close"
  24. android:layout_width="@dimen/dp_50"
  25. android:layout_height="match_parent"/>
  26. </LinearLayout>

//svg图片 crm_close:

  1. <vector xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:width="24dp"
  3. android:height="24dp"
  4. android:viewportWidth="24.0"
  5. android:viewportHeight="24.0">
  6. <path
  7. android:fillColor="#FF000000"
  8. android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
  9. </vector>

//------------------------------------------------------END---------------------------------------------------------------

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/286813
推荐阅读
相关标签
  

闽ICP备14008679号