精华内容
下载资源
问答
  • Android 自定义仿IOS上拉菜单实现

    千次阅读 2016-06-27 22:19:54
    最近在做一个歪果仁给我外包的项目,主页需要做一个类似于IOS那种上拉菜单的功能,于是一时间试了各种方法,什么Spinner、Drawlayout,SlidingMenu等等等等,都搞不了,后面实在被逼无奈自己写了一个上拉菜单控件,...

    最近在做一个歪果仁给我外包的项目,主页需要做一个类似于IOS那种上拉菜单的功能,于是一时间试了各种方法,什么Spinner、Drawlayout,SlidingMenu等等等等,都搞不了,后面实在被逼无奈自己写了一个上拉菜单控件,居然还能凑合着用!

    姑且可以叫他MyPullUpMenu! 有时间我会封装一下发到GitHub。

    效果图如下:

     

    实现的功能有仨:

    1、上拉位置未超过一定距离时,松开自动往下滚动。

    2、上拉位置超过一定距离时,松开自动网上滚动直至菜单全展开。

    3、菜单滚动到顶部并停止滚动时,点击按钮菜单自动回滚到底部


    实现步骤:

    1.首先写MyPullUpMenu的xml界面:

        <LinearLayout
            android:id="@+id/main_textmenu"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            >
    
            <ImageButton
                android:id="@+id/main_dropdownbtn"
                android:layout_width="80dp"
                android:layout_height="30dp"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:layout_gravity="center"
                android:background="@drawable/main_shape0"
                android:paddingBottom="5dp"
                android:paddingLeft="20dp"
                android:paddingRight="20dp"
                android:paddingTop="5dp"
                android:scaleType="fitXY"
                android:src="@drawable/main_bottonbtn"/>
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:orientation="vertical">
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn1"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="相片"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn2"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="老师"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn3"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="升级"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn4"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="活动"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn5"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="QR扫描"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn6"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="字典"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn7"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="店"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn8"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="建议"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn9"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="设置"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn10"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="新闻"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
                <com.whale.nangua.omegaenglish.view.TextViewKaiti
                    android:id="@+id/main_btn11"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:background="@drawable/main_shape_txtbtn"
                    android:gravity="center"
                    android:text="关于我们"
                    android:textColor="@android:color/white"
                    android:textSize="30sp"/>
    
            </LinearLayout>
    效果图:


    2.逻辑功能实现:

    首先,需要在加载的过程中将这个布局文件移动到底部:

    main_textmenulayout.setY(screenHeight - 30 * scale);
    这里的screenHeight是屏幕高度,30是按钮高度,scale是屏幕像素密度比。

    接着,需要得到整个空间的高度main_textmenulayout_HEIGHT:

    main_textmenulayout_HEIGHT = 40 * scale * 11 + 30 * scale;
    这里也可以改成得到整个空间高度之后再乘以缩放比进行缩放,我这样写是很不科学的,违反了可重用性QAQ。

    之后再到按钮的onTouch里进行触摸事件判断就可以了:

            main_dropdownbtn.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    Y = (int) event.getRawY();
                    ObjectAnimator animator;
                    switch (event.getAction()) {
                        case MotionEvent.ACTION_MOVE:
                            if ((Y <= (screenHeight - 30 * scale)) && (Y >= screenHeight - main_textmenulayout_HEIGHT  )) {
                                main_textmenulayout.setY(Y);
                            }
                            break;
                        case MotionEvent.ACTION_UP:
                            if (Y <= (screenHeight - main_textmenulayout_HEIGHT + 30 * scale)) {
                                break;
                            }
    
                            int Yposition = (int) (screenHeight - main_textmenulayout_HEIGHT / 2);
                            if (Y <= Yposition) {
                                animator = ObjectAnimator.ofFloat(main_textmenulayout, "translationY", screenHeight - main_textmenulayout_HEIGHT);
                            } else {
                                animator = ObjectAnimator.ofFloat(main_textmenulayout, "translationY", screenHeight - 30 * scale);
                            }
                            animator.setDuration(300);
                            animator.start();
                            break;
    
                    }
                    return false;
                }
            });
    最后,还有按钮的点击下滑事件,需要在该按钮的onClickListener中的onClick方法中定义:

    ObjectAnimator animator = ObjectAnimator.ofFloat(main_textmenulayout, "translationY", screenHeight - 30 * scale);
    animator.setDuration(300);
    animator.start();



    因为是商业外包项目,源码就不提供了,就这样,需要的可以私聊我。


    展开全文
  • 需要说明的是,本库没有对RecyclerView做大的修改,只是ItemView的封装。看起来是对RecyclerView的修改,其实仅仅是为RecyclerView添加了使用的方法API而已。 本库已经更新了三个版本了,会一直维护下去,根据小...
  • ionic 上拉菜单的样式坑

    千次阅读 2017-01-19 19:02:41
    正常情况应该显示成这样 但是,在android上面却成了这样,坑...原来,就是这部分样式导致了不正常的菜单出现。不知道框架为什么做如此处理,但于我们而言这样明显是不行的,于是乎修改ionic.css,如下: 把这段css

    正常情况应该显示成这样


    但是,在android上面却成了这样,坑死人不偿命


    就变成了这个鬼样子。。。什么原因呢?于是查看样式,对比后发现,android平台应用这段代码时候,会多出一段样式:



    原来,就是这部分样式导致了不正常的菜单出现。不知道框架为什么做如此处理,但于我们而言这样明显是不行的,于是乎修改ionic.css,如下:


    把这段css代码注释掉就可以了,目前还没有其他影响。

    展开全文
  • ionic上拉菜单,是在底部出现的菜单选项,有时候设定的时候,需要使用到上拉菜单的操作。上拉菜单的组件是ActionSheetController,使用起来也挺简单的。 代码地址...

    ionic上拉菜单,是在底部出现的菜单选项,有时候设定的时候,需要使用到上拉菜单的操作。上拉菜单的组件是ActionSheetController,使用起来也挺简单的。

    代码地址

    https://gitee.com/yellowcong/ionic/tree/master/ionic3-all/src/pages/sheet

    实现效果

    这里写图片描述

    上拉菜单

    上啦菜单需要导入ActionSheetController组建,然后配置上拉菜单的buttons,需要注意的是里面有role这个属性,主要有destructive 和cancel两个属性,cancle属性在最底部的菜单中。

     //显示菜单
        showMenu(){
            let actionSheet = this.actionSheetCtrl.create(
                { title: '菜单标题', 
                  buttons: [ 
                      { text: '销毁', 
                       //销毁对话框
                        role: 'destructive', 
                        handler: () => {
                           console.log('Destructive clicked'); 
                           this. showInfo("点击了销毁");
                        }
                      }, 
                      { text: '删除', 
                        handler: () => { 
                            console.log('Archive clicked'); 
                            this. showInfo("点击了删除");
                        } 
                      },
                       { text: '取消', 
                         //删除数据
                         role: 'cancel', 
                         handler: () => { 
                             console.log('Cancel clicked'); 
                            } 
                       }] 
                }); 
    
                //显示下拉菜单
                actionSheet.present();
        }

    完整代码

    前台(sheet.html)

    <ion-header>
        <ion-navbar>
            <ion-title>
            上拉菜单
            </ion-title>
        </ion-navbar>
        </ion-header>
    <ion-content>
        <h1>上拉菜单</h1>
        <button ion-button (click)="showMenu()">上拉菜单</button>
    
    </ion-content>

    后台(sheet.ts)

    //@angular/core是一个npm的模块,定义了angular的核心功能
    import { Component } from '@angular/core';
    
    //导入下拉菜单信息
    import { ActionSheetController } from 'ionic-angular';
    
    //导入toast
    import {ToastController  } from 'ionic-angular';
    
    @Component({
        selector: 'page-web',
        templateUrl: 'sheet.html'
      })
    //export关键词:将类暴露出去,以便其它的文件可以import到它。
    //类的命名:在ionic3中,页面类采用页面名+Page的命名方式,首字母大写,如HomePage, ContactPage等。
    export class SheetPage {
    
        constructor(
            public actionSheetCtrl:ActionSheetController,
            public toastCtrl:ToastController
        ){
    
        }
    
        //显示菜单
        showMenu(){
            let actionSheet = this.actionSheetCtrl.create(
                { title: '菜单标题', 
                  buttons: [ 
                      { text: '销毁', 
                       //销毁对话框
                        role: 'destructive', 
                        handler: () => {
                           console.log('Destructive clicked'); 
                           this. showInfo("点击了销毁");
                        }
                      }, 
                      { text: '删除', 
                        handler: () => { 
                            console.log('Archive clicked'); 
                            this. showInfo("点击了删除");
                        } 
                      },
                       { text: '取消', 
                         //删除数据
                         role: 'cancel', 
                         handler: () => { 
                             console.log('Cancel clicked'); 
                            } 
                       }] 
                }); 
    
                //显示下拉菜单
                actionSheet.present();
        }
    
        //显示toast消息
        showInfo(msg){
            let toast = this.toastCtrl.create({
                message: msg, //提示消息
                duration: 3000,//3秒后自动消失
                position: 'bottom',//位置top,bottom
                showCloseButton:true, //是否显示关闭按钮
                closeButtonText:"关闭" //关闭按钮字段
            });
    
            //关闭后执行的操作
            toast.onDidDismiss(() => { console.log('toast被关闭之后执行'); });
    
            //显示toast
            toast.present();//符合触发条件后立即执行显示。
        }
    
    
        //进入界面资源还没有加载完成的情况
        ionViewDidLoad() {
            console.log('ionViewDidLoad FriendsPage');
    
            // document.getElementById();
            var tabs = document.getElementsByClassName('tabbar').item(0);
            tabs['style'].display = 'none';
         }
    
         //当已经进入界面的情况
         ionViewDidEnter(){
    
         }
    
         //离开页面的时候,设置显示下面的tabbar
         ionViewWillLeave(){
            var tabs = document.getElementsByClassName('tabbar').item(0);
            tabs['style'].display = 'flex';
         }
    }

    参考文章

    https://ionicframework.com/docs/api/components/action-sheet/ActionSheetController/

    展开全文
  • Bootstrap的导航条下拉菜单为了适应移动设备没有鼠标hover的状态,都是点击弹出下拉菜单,为了适应一般网站使用,我稍作了一些修改,鼠标hover时就弹出二级菜单。 效果图: CSS修改: <style type="text/css...
  • 左右联动图文版jquery.mobile仿美团外卖菜单,可以左右联动,项目中需要,又没有找到参考,就自己写了一个。点击左侧的文字大类,右侧的图片列表会对应切换,比较有趣的菜单,美团网站的菜单
  • h5下拉菜单特效

    2019-10-30 00:03:52
    h5下拉菜单特效
  • 如果要使用滑动菜单,目前最流行的应该是DrawerLayout,这个由谷歌开源的控件已经被放在android包中,使用起来非常的方便,唯一的遗憾是DrawerLayout只支持左右滑动的菜单,但是并不支持上下滑动的菜单,我们今天要...

    前言

    这几天正在研究几个比较有名的开源项目,偶然发现了SlidingUpPanelLayout这个神器,经过一番研究,和大家一起分享一下学习心得。

    如果要使用滑动菜单,目前最流行的应该是DrawerLayout,这个由谷歌开源的控件已经被放在android包中,使用起来非常的方便,唯一的遗憾是DrawerLayout只支持左右滑动的菜单,但是并不支持上下滑动的菜单,我们今天要介绍的SlidingUpPanelLayout,相当于竖向的DrawerLayout。

    首先我们看一个动画:
    在这里插入图片描述
    很多的音乐播放器都有这样的交互,使用SlidingUpPanelLayout就可以实现。

    SlidingUpPanelLayout早在2016年就已经发布了,肯定已经非常的稳定,大家可以到github上先看看基本的使用方法。

    https://github.com/umano/AndroidSlidingUpPanel

    正文

    首先我们需要在build.gradle文件中依赖SlidingUpPanelLayout:

    dependencies {
        repositories {
            mavenCentral()
        }
        compile 'com.sothree.slidinguppanel:library:3.4.0'
    }
    

    我们写一个最简单的布局:

    <?xml version="1.0" encoding="utf-8"?>
    <layout>
    
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            tools:context=".MainActivity">
    
            <Button
                android:id="@+id/button"
                android:layout_width="match_parent"
                android:text="button"
                android:layout_height="wrap_content"/>
    
            <com.sothree.slidinguppanel.SlidingUpPanelLayout
                android:id="@+id/slidingUpPanelLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="bottom"
                app:umanoOverlay="true"
                app:umanoFadeColor="@color/colorAccent"
                app:umanoPanelHeight="95dp">
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@color/colorPrimary"
                    android:gravity="center"
                    android:clickable="true"
                    android:focusable="false"
                    android:focusableInTouchMode="true"
                    android:text="content" />
    
                <RelativeLayout
                    android:id="@+id/panel"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical">
    
    	            <TextView
    	                android:layout_width="match_parent"
    	                android:layout_height="wrap_content"
    	                android:ellipsize="end"
    	                android:gravity="center"
    	                android:text="@string/content"
    	                android:textColor="@color/white" />
    	                            
                </RelativeLayout>
    
            </com.sothree.slidinguppanel.SlidingUpPanelLayout>
    
        </LinearLayout>
    </layout>
    

    在这里插入图片描述
    仅仅定义xml,一个可以上滑的菜单就完成了。接下来我们看看SlidingUpPanelLayout都提供了哪些方法。

    setPanelHeight

    setPanelHeight对应自定义属性umanoPanelHeight。

    当菜单被折叠时,显示的高度

    上面的demo中已经使用了这个自定义属性,非常好理解。

    setOverlayed

    setOverlayed对应自定义属性umanoOverlay。

    意思是菜单是否要覆盖到主页面之上:
    如果是false,相当于LinearLayout,主页面在上,菜单在下
    如果是true,相当于FrameLayout

    默认是false类型,具体按照UE的需求自行选择。

    setClipPanel

    setClipPanel对应自定义属性umanoClipPanel。

    是否要裁剪菜单的区域,特别注意,此属性只会在 Overlayed = false的时候有效
    如果是true,会把被菜单遮盖的区域,主页面的内容会被裁掉。
    如果是false,菜单的内容和主页面的内容会同时显示,覆盖在上面。

    这个属性,我猜测主要是为了优化绘制速度的,如果你的菜单有不透明背景,建议设置为true,缩小主页面绘制的区域范围,提高流畅度。

    setDragView

    setDragView对应自定义属性umanoDragView。

    从字面的意思来看,就是可以拖拽的View,如果你不希望整个菜单都可以被手势展开或折叠,可以设置某一个View作为响应手势的热区。

    setParallaxOffset

    setParallaxOffset对应自定义属性umanoParallaxOffset。

    当菜单在滑动的时候,主页面一起移动的视觉偏差。

    例如菜单展开的过程中,主页面向上移动100dp,视觉上有一种主页面被顶上去的效果。

    setFadeOnClickListener

    setFadeOnClickListener没有对应的自定义属性。

    如果你在滑动的过程中,点击了菜单以外的部分,你会发现菜单的展开或折叠动画被中断了,如果你希望在点击的时候做什么处理,你可以设置setFadeOnClickListener。不过此处有坑,那就是你的主页面必须是可点的,以刚才的demo为例:

        <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@color/colorPrimary"
                    android:gravity="center"
                    android:clickable="true"
                    android:focusable="false"
                    android:focusableInTouchMode="true"
                    android:text="content" />
    

    我设置的主页面只是一个TextView,TextView默认是不可点击的,所以无论怎么点setFadeOnClickListener都不会触发,所以需要手动加上android:clickable=true,才会响应setFadeOnClickListener。

    setCoveredFadeColor

    setCoveredFadeColor对应自定义属性umanoFadeColor。

    菜单覆盖在主页面上的背景颜色,此颜色可以被rootView的背景颜色盖住,也可以理解为阴影的颜色

    setAnchorPoint

    setAnchorPoint对应自定义属性umanoAnchorPoint。

    自定义的菜单展开的锚点比例。值为0-1之间的小数,非手动拖拽菜单的情况下(例如点击)只会展开到这个锚点的比例。

    例如,setAnchorPoint(0.5f),菜单只会自动展开一半。

    setPanelState

    设置菜单的展开状态,目前主要有:

        public enum PanelState {
            EXPANDED,  // 展开
            COLLAPSED,   // 折叠
            ANCHORED,    // 锚点
            HIDDEN,         // 隐藏
            DRAGGING    // 拖拽中(个人觉得理解为变化中更合适)
        }
    

    与之相关属性有umanoInitialState:菜单的初始状态。

    setScrollableView

    setScrollableView对应的自定义属性为umanoScrollableView。

    可以滚动的Child。如果内部有ScrollView,ListView,RecyclerView,通过这个方法,会把手势的滑动让给他们,从而避免SlidingUpPanelLayout和child之间的手势冲突。

    SlidingUpPanelLayout只能设置一个child作为ScrollableView。

    setScrollableViewHelper

    setScrollableViewHelper没有对应的自定义属性。

    他的作用和setScrollableView类似,只不过setScrollableViewHelper更具有通用性,可以对的每一个View自定义手势处理:

    public int getScrollableViewScrollPosition(View scrollableView, boolean isSlidingUp) {
            if (scrollableView == null) return 0;
            if (scrollableView instanceof ScrollView) {
                ...
            } else if (scrollableView instanceof ListView && ((ListView) scrollableView).getChildCount() > 0) {
                ...
            } else if (scrollableView instanceof RecyclerView && ((RecyclerView) scrollableView).getChildCount() > 0) {
                ....
            } else {
                return 0;
            }
        }
    

    ScrollableViewHelper内部已经处理了ScrollView,ListView,RecyclerView,能够满足大部分的需求。

    addPanelSlideListener

    addPanelSlideListener是SlidingUpPanelLayout最核心的api,监听菜单展开的进度。他的用法和动画的的监听基本一样:

    SlidingUpPanelLayout.PanelSlideListener {
                override fun onPanelSlide(panel: View?, slideOffset: Float) {
                		// panel :就是菜单的根布局
                		// slideOffset:菜单展开的比例,值为0到1,0为折叠状态,1为展开状态
                }
    
                override fun onPanelStateChanged(
                    panel: View?,
                    previousState: SlidingUpPanelLayout.PanelState?,
                    newState: SlidingUpPanelLayout.PanelState?
                ) {
                 	// newState:目前SlidingUpPanelLayout的状态
                }
            }
    

    EXPANDED, // 展开
    COLLAPSED, // 折叠
    ANCHORED, // 锚点,这个状态只有设置了锚点才会有
    HIDDEN, // 隐藏
    DRAGGING // 拖拽中(个人觉得理解为变化中更合适),无论是点击还是拖拽,只要是菜单在滑动,都会进入这个状态。

    总结

    关于SlidingUpPanelLayout的所有内容到此结束了,几乎所有的api我们都已经介绍了,但是具体的效果建议大家自己去尝试,尤其是ClipPanel和Overlayed,有什么问题可以留言讨论。

    展开全文
  • SlidingDrawerLayout上下滑动的菜单控件

    千次阅读 多人点赞 2016-06-24 23:04:55
    有一种控件需求,通过上下滑动来打开上下菜单。这个控件要求自动打开上下两个菜单,而且还要随着手势(注意:多触点)上下滑动菜单。之前Android系统有提供一个叫SlidingDrawer(完整路径:android.widget....
  • HTML实例之下拉菜单

    千次阅读 2017-01-20 17:08:43
    当鼠标位于学院概况/学科建设/教师园地/学生园地中的任意一个时,弹出相应的下拉菜单。 基本思路:使用列表ul和li实现总体布局,通过li嵌套ul实现下拉菜单。html代码如下: 学院概况 <ul>
  • JQuery经典例子:可拉伸菜单

    千次阅读 热门讨论 2016-01-15 16:27:59
    几乎所有的网页都会有可以伸缩的菜单,它的实现也比较简单。可伸缩的菜单实现的思路是这样的:在HTML中将 菜单写好,在css中将菜单的样式设置好并且将二级菜单隐藏起来,最后就是在JS中将隐藏的菜单显示出来。如果...
  • 小甲鱼零基础入门学习python笔记

    万次阅读 多人点赞 2019-08-14 11:06:30
    一个打了激素的数组 011列表:一个打了激素的数组2 012列表:一个打了激素的数组3 013元组:戴了枷锁的列表 014字符串:各种奇葩的内置方法 015字符串:格式化 016 序列!序列! 017函数:Python的乐高积木 018 ...
  • 这是一款基于纯JavaScript实现的侧边栏菜单,因为整个菜单没有使用jQuery等第三方插件,因此菜单比较轻量级的。这款JS侧边栏菜单的特点是点击按钮可以展开和隐藏,并且在隐藏时自动显示提示文字,展开后又隐藏提示...
  • Flutter 自定义下拉菜单

    千次阅读 2021-01-08 18:18:54
    由于Flutter并没有提供下拉组件,所以在平时开发时就需要我们自己编写自定义下拉组件,如下图所示。 其实,要实现这样的下拉菜单也比较简单,就是使用Stack层叠布局。首先,自定义一个DropDownMenuWidget组件用于...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    界面检查法 1明确被修改的功能 简单 2修改功能的下游功能 3调用修改功能的功能和 修改功能调用了的功能 4和修改功能游相同输入输出的功能 5在测试中执行上诉关联的用例 代码检查法 1明确被修改的函数和代码 准确,...
  • 在Android系统中,“上拉刷新/下拉加载更多”和“侧滑菜单”都是非常常用的操作界面,二者都比较容易,网上也有许多牛人做好的库可以直接使用。可是很少有讲解如何让两者并存的方法,前不久在一个项目中需要在已有...
  • 博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主威威喵原创,请多支持与指教。 ... 系列文章: ...自定义 View(二)自己动手实现下拉刷新、上拉加载功能 自定义 View(三...
  • MATLAB GUI设计快速入门实例

    万次阅读 多人点赞 2019-11-27 10:47:15
    为了实现课题的一个功能,需要设计一个图形界面,因此使用matlab GUIDE进行设计,但前期没有接触过,因此通过实例练习,理解MATLAB gui设计相关知识。 一、几个GUI设计需要了解的知识 1、进入GUI 设计界面:在命令行...
  • css+jquery(js)写下拉菜单

    千次阅读 2017-05-23 00:26:32
    html中select是满足不了广大用户对下拉菜单的需求那么我们可以用css+jq来订制自己想要的下拉菜单; 代码如下:<!DOCTYPE html> <title>Document <script type="text/javascript" src="jquer
  • QT4 QMenu菜单 自定义上拉弹出

    千次阅读 2012-07-18 14:05:46
    ./cpp #include "form1.h" #include "ui_form1.h" Form1::Form1(QWidget *parent) :  QDialog(parent),  ui(new Ui::Form1) {  ui->setupUi(this);  first = new QAction(tr("&first"), this);
  • 我下面的代码是没有问题的,确实每次都能加载到,...//上拉加载下一页商品 onReachBottom: function() { console.log('--------上拉加载--------'); this.getGoods(page); }, //刷新列表 getGoods: functio...
  • 下拉菜单能显示item.name, 点击选择之后没有显示在选择框里,解决办法很简单,加一个 :label = 'item.name'即可。。。看网上抄来抄去还绑定@change,只需要显示的话哪有那么麻烦。。。
  • 微信小程序之下拉菜单的三级联动筛选框

    万次阅读 热门讨论 2018-08-26 13:03:57
    下拉菜单很长见,网上也很多例子,自己也根据网上的资料,仿写了一个。感谢作者小小小是我提供了资料,在此做了二次开发,也分享一下,因为自己最近也需要写个小程序的下拉框的三级菜单筛选,分享给有需要的人哈。 ...
  • 原生js写网页下拉菜单

    千次阅读 2017-07-20 21:20:11
    } //盒子下的a标签 文字下划线:没有;背景颜色:#fff,显示状态:块级元素显示;宽度:100px;高度:30px;背景色: #666;   #con a:hover { background-color: #0FF;} //盒子里面的a标签,鼠标滑过时背景色...
  • 关于下拉刷新,上拉加载在官方文档已经有了比较详细的说明,这里只说一下实际使用是需要注意的地方。 官方下拉刷新:http://dev.dcloud.net.cn/mui/pulldown/ 官方上拉加载:http://dev.dcloud.net.cn/mui/pullup/...
  • Android 高仿 QQ5.0 侧滑菜单效果 自定义控件来袭

    万次阅读 多人点赞 2014-09-15 09:19:36
    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39257409,本文出自【张鸿洋的博客】一篇博客带...的确,一篇也承诺过,稍微修改一篇的代码,实现QQ5.0侧滑菜单~~好了,下面就开始为大家展
  • Android 仿iOS上拉下拉界面的效果实现

    千次阅读 2016-09-29 15:11:21
    感觉iOS的那种上拉下拉界面的功能很好,所以今天在项目中也加了,都实现了,把项目中的例子拿出来给大家分享一下 主要是重写ScrollView,xml布局也是一样的,只能有一个LinearLayout或者RelativeLayout布局,如下...
  • 这是一款基于jQuery实现的多级下拉菜单,带动画效果,所有的元素以ul li ul li ul li的循环格式嵌套 如果没有下级分类 就用li a结束嵌套,代码内不用toggle()的原因是为了在收缩菜单的时候同时也将该菜单的下级菜单...
  • 在日常的生活中,想必大家都接触过下拉菜单的使用,这样为我们提供了极大的方便,那么下面看一下如何来制作吧。 one: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,855
精华内容 15,542
关键字:

上拉菜单没有了