仿新闻类实现滑动选择标签(二)
2017-06-06 10:39
169 查看
通过RecyclerView结合ItemTouchHelper实现拖动改变位置功能。
标签页面主要逻辑,第一个项目不变,前一界面选择所在的标签位置,跳转到本界面,用红色文字表示,推荐栏目中,显示定制栏目不存在的栏目,删除定制栏目,添加到推荐栏目中,点击推荐栏目,将点击项加入定制栏目中,并且在推荐栏目中删除,拖动改变顺序或者添加删除后,回到前一界面,更改前一界面的标签和界面,并且定位在选中标签对应的页面。长按显示叉号
相关类:主界面
ColumnCustomizationActivity.java
activity_column_customization.xml
drag_item_layout.xml
MyItemTouchCallback.java
RecyclerAdapter.java
OnRecyclerItemClickListener.java
参考文献:
android开发游记:ItemTouchHelper 使用RecyclerView打造可拖拽的GridView
标签页面主要逻辑,第一个项目不变,前一界面选择所在的标签位置,跳转到本界面,用红色文字表示,推荐栏目中,显示定制栏目不存在的栏目,删除定制栏目,添加到推荐栏目中,点击推荐栏目,将点击项加入定制栏目中,并且在推荐栏目中删除,拖动改变顺序或者添加删除后,回到前一界面,更改前一界面的标签和界面,并且定位在选中标签对应的页面。长按显示叉号
相关类:主界面
ColumnCustomizationActivity.java
public class ColumnCustomizationActivity extends BaseCompatActivity implements MyItemTouchCallback.OnDragListener { @BindView(R.id.toolbar_title) TextView toolbarTitle; @BindView(R.id.recyclerview_already) RecyclerView recyclerviewAlready; @BindView(R.id.recyclerview_recommend) RecyclerView recyclerviewRecommend; @BindView(R.id.back) ImageView ivBack; @BindView(R.id.tv_edit) TextView tvEdit; private List<ArticleBean> articleBeanList = new ArrayList<>(); private List<ArticleBean> articleBeanList2 = new ArrayList<>(); private RecyclerAdapter adapterAlready; private RecyclerAdapter adapterAll; private int selectPosition = 0;//与前一页对应,选中的标签 public static String SELECT_COLUMN = "SELECT_COLUMN"; public static String SELECT_COLUMN_INDEX = "SELECT_COLUMN_INDEX"; private static String SELECT_PARAM = "select_column"; private static String SELECT_PARAM_LIST = "select_column_list"; public static void startForResult(Activity context, int selectPosition,ArrayList<ArticleBean> articleBeanArrayList, int requestCode) { Intent intent = new Intent(); intent.setClass(context, ColumnCustomizationActivity.class); intent.putExtra(SELECT_PARAM, selectPosition); intent.putExtra(SELECT_PARAM_LIST, articleBeanArrayList); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); context.startActivityForResult(intent, requestCode); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_column_customization); ButterKnife.bind(this); ivBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); Intent intent = getIntent(); if (intent != null) { selectPosition = intent.getIntExtra(SELECT_PARAM, 0); articleBeanList= (List<ArticleBean>) intent.getSerializableExtra(SELECT_PARAM_LIST); } if(articleBeanList==null){ articleBeanList=new ArrayList<>(); } setUpRecyclerviewAlready(); setUpRecyclerviewRecommend(); //调用推荐栏目接口 getListArticleMainClass(); tvEdit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (adapterAlready != null) { UpdateCustom(); } } }); } /** * 设置已选栏目 */ private void setUpRecyclerviewAlready() { adapterAlready = new RecyclerAdapter(R.layout.drag_item_layout, articleBeanList, false, ColumnCustomizationActivity.this, selectPosition); recyclerviewAlready.setHasFixedSize(true); recyclerviewAlready.setAdapter(adapterAlready); recyclerviewAlready.setNestedScrollingEnabled(false); //防止滑动卡顿 GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3) { @Override public boolean canScrollVertically() { return false; } }; recyclerviewAlready.setLayoutManager(gridLayoutManager); int spanCount = 3;//跟布局里面的spanCount属性是一致的 int spacing = 10;//每一个矩形的间距 boolean includeEdge = true;//如果设置成false那边缘地带就没有间距 //设置每个item间距 recyclerviewAlready.addItemDecoration(new GridSpacingItemDecoration(spanCount, spacing, includeEdge)); final ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new MyItemTouchCallback(adapterAlready).setOnDragListener(this)); itemTouchHelper.attachToRecyclerView(recyclerviewAlready); recyclerviewAlready.addOnItemTouchListener(new OnRecyclerItemClickListener(recyclerviewAlready) { @Override public void onLongClick(RecyclerView.ViewHolder vh) { tvEdit.setVisibility(View.VISIBLE); adapterAlready.doStartEditMode(recyclerviewAlready); adapterAlready.setShowImage(true); if(vh.getAdapterPosition()==0){//第一项不操作 return; } itemTouchHelper.startDrag(vh); } @Override public void onItemClick(final RecyclerView.ViewHolder vh) { adapterAlready.setmAdapterInterface(new RecyclerAdapter.adapterInterface() { @Override public void imageViewClick() { try { articleBeanList2.add(articleBeanList.get(vh.getLayoutPosition())); adapterAll.notifyDataSetChanged(); //点击删除按钮,如果选中的索引比剩余数据的长度大,将选中索引设置为最后一项 if (selectPosition == articleBeanList.size() - 1) { selectPosition--; if (selectPosition <= 0) { selectPosition = 0; } } articleBeanList.remove(vh.getLayoutPosition()); adapterAlready.setSelectPosition(selectPosition); adapterAlready.notifyDataSetChanged(); }catch (Exception e){ e.printStackTrace(); } } @Override public void itemViewClick() { try { selectPosition = vh.getLayoutPosition();//设置选中的项目 adapterAlready.setSelectPosition(selectPosition); adapterAlready.notifyDataSetChanged(); }catch (Exception e){ e.printStackTrace(); } } }); // Toast.makeText(getActivity(),item.getId()+" "+item.getName(),Toast.LENGTH_SHORT).show(); } }); } /** * 设置推荐栏目 */ private void setUpRecyclerviewRecommend() { adapterAll = new RecyclerAdapter(R.layout.drag_item_layout, articleBeanList2, false, ColumnCustomizationActivity.this, -1); recyclerviewRecommend.setHasFixedSize(true); recyclerviewRecommend.setAdapter(adapterAll); recyclerviewRecommend.setNestedScrollingEnabled(false); //防止滑动卡顿 GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3) { @Override public boolean canScrollVertically() { return false; } }; recyclerviewRecommend.setLayoutManager(gridLayoutManager); int spanCount = 3;//跟布局里面的spanCount属性是一致的 int spacing = 10;//每一个矩形的间距 boolean includeEdge = true;//如果设置成false那边缘地带就没有间距 //设置每个item间距 recyclerviewRecommend.addItemDecoration(new GridSpacingItemDecoration(spanCount, spacing, includeEdge)); ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new MyItemTouchCallback(adapterAll).setOnDragListener(this)); itemTouchHelper.attachToRecyclerView(recyclerviewRecommend); recyclerviewRecommend.addOnItemTouchListener(new OnRecyclerItemClickListener(recyclerviewAlready) { @Override public void onLongClick(RecyclerView.ViewHolder vh) { } @Override public void onItemClick(final RecyclerView.ViewHolder vh) { try { //点击推荐栏目,加入到定制栏目组内,本栏目在推荐栏目组里删除, articleBeanList.add(articleBeanList2.get(vh.getLayoutPosition())); adapterAlready.notifyDataSetChanged(); articleBeanList2.remove(vh.getLayoutPosition()); adapterAll.notifyDataSetChanged(); }catch (Exception e){ e.printStackTrace(); } } }); } @Override public void onFinishDrag() { } /** * 所有栏目 */ public void getListArticleMainClass() { String url = Contants.APIURL.GET_LISTARTICLEMAINCLASS.getUrl(); RequestEntity<String> entity = new RequestEntity<>(); OkHttpUtils.get().url(url).headers(entity.getHeader()).build().execute(new JsonCallBack<ResponseEntity<ArrayList<ArticleBean>>>() { @Override public void onError(Call call, Exception e, RequestCall requestCall) { ToastUtil.showLongToast("网络异常,请稍后尝试"); } @Override public void onResponse(ResponseEntity<ArrayList<ArticleBean>> data, RequestCall requestCall) { if (data.isOK()) { articleBeanList2.clear(); //遍历数据,将已有的栏目筛选掉 for (ArticleBean bean : data.getRstData()) { boolean isExist = false;//是否已存在栏目 for (ArticleBean bean1 : articleBeanList) { if (bean.getId().equals(bean1.getId())) { isExist = true; } } if (!isExist) {//不存在,添加 articleBeanList2.add(bean); } } adapterAll.notifyDataSetChanged(); } else { ToastUtil.showLongToast(data.getErrorMsg()); } } }); } /** * 更新栏目 */ private void UpdateCustom() { showProgressDialog("请稍候", null, null); ArrayList<UpdateCustomBean> arrayList = new ArrayList<>(); for (ArticleBean bean : articleBeanList) { UpdateCustomBean updateCustomBean = new UpdateCustomBean(); updateCustomBean.setName(bean.getName()); updateCustomBean.setSN(bean.getSN()); updateCustomBean.setCitizenId("" + UserSession.getInstance().getUserInfo().getUserId()); updateCustomBean.setClassId(bean.getId()); arrayList.add(updateCustomBean); } RequestEntity<ArrayList<UpdateCustomBean>> entity = new RequestEntity<>(); entity.setReqData(arrayList); OkHttpUtils.postString().url(Contants.APIURL.GET_UPDATECUSTOM.getUrl()).headers(entity.getHeader()) //.mediaType(entity.getMediaType()) .content(entity.getBody()).build().execute(new JsonCallBack<ResponseEntity<String>>() { @Override public void onError(Call call, Exception e, RequestCall requestCall) { dismissProgressDialog(); ToastUtil.showLongToast("服务器繁忙,请稍后尝试。"); } @Override public void onResponse(ResponseEntity<String> data, RequestCall requestCall) { dismissProgressDialog(); if (data.isOK()) { selectPosition = adapterAlready.getSelectPosition(); Intent mIntent = new Intent(); mIntent.putExtra(SELECT_COLUMN, (Serializable) articleBeanList); mIntent.putExtra(SELECT_COLUMN_INDEX, selectPosition); ColumnCustomizationActivity.this.setResult(RESULT_OK, mIntent); finish(); } else { ToastUtil.showLongToast(data.getErrorMsg()); } } }); } }
activity_column_customization.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffffff" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp"> <ImageView android:id="@+id/back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/close_new" android:layout_gravity="center" android:padding="10dp" android:layout_centerVertical="true" /> <TextView android:id="@+id/toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textSize="@dimen/statebar_title_size" android:textColor="@color/color_black_111111" android:text="栏目定制"/> <TextView android:id="@+id/tv_edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="@color/color_black_111111" android:text="完成" android:visibility="invisible" android:padding="10dp" android:layout_centerVertical="true" android:layout_alignParentRight="true" /> </RelativeLayout> <View android:id="@+id/view_divider" android:layout_width="match_parent" android:layout_height="2dp" android:background="@color/color_gray_f4f4f4"/> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="@color/black" android:text="已选栏目"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="@color/color_gray_999999" android:text="按住拖动调整排序" android:layout_alignParentRight="true" android:layout_centerVertical="true"/> </RelativeLayout> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview_already" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="@color/black" android:text="推荐栏目" android:layout_margin="10dp"/> <View android:layout_width="match_parent" android:layout_height="2dp" android:background="@color/color_gray_f4f4f4" android:layout_marginLeft="10dp" android:layout_marginRight="10dp"/> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview_recommend" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp"/> </LinearLayout> </android.support.v4.widget.NestedScrollView>
drag_item_layout.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="110dp" android:layout_height="60dp" android:background="@color/white" android:id="@+id/fragment" > <TextView android:id="@+id/tv_drag" android:layout_width="90dp" android:layout_height="40dp" android:gravity="center" android:layout_margin="10dp" android:text="测试测试" android:background="@drawable/rect_solid_and_stroke_gray2_corner_5dp" android:textColor="@color/black"/> <ImageView android:id="@+id/iv_x" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:src="@drawable/delete_new" /> </FrameLayout>
MyItemTouchCallback.java
public class MyItemTouchCallback extends ItemTouchHelper.Callback { private ItemTouchAdapter itemTouchAdapter; public MyItemTouchCallback(ItemTouchAdapter itemTouchAdapter){ this.itemTouchAdapter = itemTouchAdapter; } @Override public boolean isLongPressDragEnabled() { return true; } @Override public boolean isItemViewSwipeEnabled() { return true; } @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { if (recyclerView.getLayoutManager() instanceof GridLayoutManager) { final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT; final int swipeFlags = 0; return makeMovementFlags(dragFlags, swipeFlags); } else { final int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN; //final int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END; final int swipeFlags = 0; return makeMovementFlags(dragFlags, swipeFlags); } } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { int fromPosition = viewHolder.getAdapterPosition();//得到拖动ViewHolder的position int toPosition = target.getAdapterPosition();//得到目标ViewHolder的position itemTouchAdapter.onMove(fromPosition,toPosition); return true; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { int position = viewHolder.getAdapterPosition(); itemTouchAdapter.onSwiped(position); } @Override public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) { //滑动时改变Item的透明度 final float alpha = 1 - Math.abs(dX) / (float) viewHolder.itemView.getWidth(); viewHolder.itemView.setAlpha(alpha); viewHolder.itemView.setTranslationX(dX); } else { super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive); } } @Override public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) { /* if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) { if (background == null && bkcolor == -1) { Drawable drawable = viewHolder.itemView.getBackground(); if (drawable == null) { bkcolor = 0; } else { background = drawable; } } viewHolder.itemView.setBackgroundColor(Color.LTGRAY); }*/ if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) { if (background == null && bkcolor == -1) { Drawable drawable = viewHolder.itemView.getBackground(); if (drawable == null) { bkcolor = 0; } else { background = drawable; } } viewHolder.itemView.setBackgroundColor(Color.TRANSPARENT); } super.onSelectedChanged(viewHolder, actionState); } @Override public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { super.clearView(recyclerView, viewHolder); /*viewHolder.itemView.setAlpha(1.0f); if (background != null) viewHolder.itemView.setBackgroundDrawable(background); if (bkcolor != -1) viewHolder.itemView.setBackgroundColor(bkcolor);*/ //viewHolder.itemView.setBackgroundColor(0); if (onDragListener!=null){ onDragListener.onFinishDrag(); } } private Drawable background = null; private int bkcolor = -1; private OnDragListener onDragListener; public MyItemTouchCallback setOnDragListener(OnDragListener onDragListener) { this.onDragListener = onDragListener; return this; } public interface OnDragListener{ void onFinishDrag(); } public interface ItemTouchAdapter { void onMove(int fromPosition, int toPosition); void onSwiped(int position); } }
RecyclerAdapter.java
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.MyViewHolder> implements MyItemTouchCallback.ItemTouchAdapter { private Context context; private int src; private List<ArticleBean> results; private boolean isShowImage = false; private adapterInterface mAdapterInterface; private int selectPosition = 0;//已选择栏目的位置 public RecyclerAdapter(int src, List<ArticleBean> results, boolean isShowImage, Context context, int selectPosition) { this.results = results; this.src = src; this.isShowImage = isShowImage; this.context = context; this.selectPosition = selectPosition; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { this.context = parent.getContext(); View itemView = LayoutInflater.from(parent.getContext()).inflate(src, parent, false); return new MyViewHolder(itemView); } public void setSelectPosition(int selectPosition) { this.selectPosition = selectPosition; } @Override public void onBindViewHolder(final MyViewHolder holder, int position) { holder.textView.setText(results.get(position).getName()); if (position == 0&&selectPosition!=0&&selectPosition!=-1)//第一项,如果没选中,并且不等于-1(-1用来区分推荐栏目),改变颜色 {//第一项颜色不同,不显示删除图标 holder.imageView.setVisibility(View.INVISIBLE); holder.textView.setTextColor(context.getResources().getColor(R.color.color_gray_999999)); } else { if (position == selectPosition) {//改变已选中项目背景颜色和字体颜色 // holder.textView.setBackgroundResource(R.drawable.rect_solid_and_stroke_red_corner_5dp); holder.textView.setTextColor(Color.RED); } else { holder.textView.setBackgroundResource(R.drawable.rect_solid_and_stroke_gray2_corner_5dp); holder.textView.setTextColor(Color.BLACK); } if (isShowImage) { holder.imageView.setVisibility(View.VISIBLE); } else { holder.imageView.setVisibility(View.INVISIBLE); } holder.imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mAdapterInterface != null) { mAdapterInterface.imageViewClick(); } } }); } //显示删除按钮,可以点击 if(isShowImage){ holder.fragment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mAdapterInterface != null) { mAdapterInterface.itemViewClick(); } } }); } } @Override public int getItemCount() { return results.size(); } @Override public void onMove(int fromPosition, int toPosition) { if (fromPosition == 0 || toPosition == 0) {//第一个不可拖动 return; } if (fromPosition < toPosition) { for (int i = fromPosition; i < toPosition; i++) { Collections.swap(results, i, i + 1); } } else { for (int i = fromPosition; i > toPosition; i--) { Collections.swap(results, i, i - 1); } } notifyItemMoved(fromPosition, toPosition); if(fromPosition==selectPosition){//拖动的初始位置是选中项 selectPosition=toPosition; } } public int getSelectPosition() { return selectPosition; } @Override public void onSwiped(int position) { results.remove(position); notifyItemRemoved(position); } public class MyViewHolder extends RecyclerView.ViewHolder { public TextView textView; public ImageView imageView; public FrameLayout fragment; public MyViewHolder(View itemView) { super(itemView); /* WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); int width = wm.getDefaultDisplay().getWidth(); ViewGroup.LayoutParams layoutParams = itemView.getLayoutParams(); layoutParams.height = width/6; itemView.setLayoutParams(layoutParams);*/ textView = (TextView) itemView.findViewById(R.id.tv_drag); imageView = (ImageView) itemView.findViewById(R.id.iv_x); fragment = (FrameLayout) itemView.findViewById(R.id.fragment); } } public void setShowImage(boolean showImage) { isShowImage = showImage; } public void doStartEditMode(RecyclerView parent) { //遍历子控件,将叉号图标显示 int visibleChildCount = parent.getChildCount(); for (int i = 0; i < visibleChildCount; i++) { View view = parent.getChildAt(i); ImageView imgEdit = (ImageView) view.findViewById(R.id.iv_x); imgEdit.setVisibility(View.VISIBLE); } } public boolean isShowImage() { return isShowImage; } public void setmAdapterInterface(adapterInterface mAdapterInterface) { this.mAdapterInterface = mAdapterInterface; } public interface adapterInterface { public void imageViewClick(); public void itemViewClick();//子item点击事件 } }
OnRecyclerItemClickListener.java
public class OnRecyclerItemClickListener implements RecyclerView.OnItemTouchListener{ private GestureDetectorCompat mGestureDetector; private RecyclerView recyclerView; public OnRecyclerItemClickListener(RecyclerView recyclerView){ this.recyclerView = recyclerView; mGestureDetector = new GestureDetectorCompat(recyclerView.getContext(),new ItemTouchHelperGestureListener()); } @Override public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) { mGestureDetector.onTouchEvent(e); return false; } @Override public void onTouchEvent(RecyclerView rv, MotionEvent e) { mGestureDetector.onTouchEvent(e); } @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { } private class ItemTouchHelperGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onSingleTapUp(MotionEvent e) { View child = recyclerView.findChildViewUnder(e.getX(), e.getY()); if (child!=null) { RecyclerView.ViewHolder vh = recyclerView.getChildViewHolder(child); onItemClick(vh); } return true; } @Override public void onLongPress(MotionEvent e) { View child = recyclerView.findChildViewUnder(e.getX(), e.getY()); if (child!=null) { RecyclerView.ViewHolder vh = recyclerView.getChildViewHolder(child); onLongClick(vh); } } } public void onLongClick(RecyclerView.ViewHolder vh){} public void onItemClick(RecyclerView.ViewHolder vh){} }
参考文献:
android开发游记:ItemTouchHelper 使用RecyclerView打造可拖拽的GridView
相关文章推荐
- 仿新闻类实现滑动选择标签(一)
- php jquery 实现新闻标签分类与无刷新分页
- JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参(selected的值和页面其它元素的值)
- android FragmentTabhost+ViewPager实现可滑动的标签页
- 用Jquery实现修改页面selecte标签的默认选择
- ActionBarSherlock与Viewpager及Fragment结合实现仿新闻客户端顶部滑动切换效果
- php + jquery ui插件 + jquery pager插件 实现新闻的 标签分类 + 无刷新分页
- Android之Tab分页标签的实现方法一-----可滑动的Tab的3种方式
- 在窗体上放置一个标签、一个按钮、一个fontDialog控件。标签内容改为“烟台大学”。实现功能:1)程序运行时,单击打开字体对话框按钮,可选择字体,并以所选字体作为标签字体。
- 。窗体上有一个文本框(多行、且带有垂直滚动条)、一个标签(字体颜色红色、字号16)、一个按钮(该按钮被单击时,实现将文本框中选择文本复制至标签。
- 用Jquery实现修改页面selecte标签的默认选择
- JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
- JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
- 游戏引擎Andengine总结(六):滑动关卡选择的实现
- Struts2标签实现for循环 分页 选择第几页
- 基于jquery的选择标签至文本域效果,可多选/可过滤重复/可限制个数的实现代码
- 使用 TabActivity 实现滑动翻页(带动画)和标签置底
- 关于JSP中单击任意标签弹出文件选择框(<input type="file"/>)的实现方法
- 滑动菜单方案之二: Activity实现从底部弹出或滑出选择菜单或窗口
- Android 实现用户列表信息滑动删除功能和选择删除功能