Padding负值遮挡视图(下拉刷新头部)

这篇具有很好参考价值的文章主要介绍了Padding负值遮挡视图(下拉刷新头部)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

padding值负值时,表示当前视图被遮住了一部分
可使用 view.set Padding( int left , int top , int right , int bottom) 方法进行动态设置。

下拉刷新头部的实现:

Padding负值遮挡视图(下拉刷新头部),android,java


(1) 获取屏幕大小。
(2) 设置 刷新头高度(定值)
     设置 显示部分高度为/屏幕高度(定值)
     设置 整体高度 为刷新头高与屏幕高之和(定值)
(3) 整体的 paddlingTop 设为负值时即可遮住刷新头。(为0-刷新头高时遮住全部刷新头)
(4) 整体的paddingTop值进行动态设置:
0-刷新头高 -> 不断增加 -> 0(完全展示) -> 不断减少 -> 0-刷新头高文章来源地址https://www.toymoban.com/news/detail-741686.html

//例
//整体为RelativeLayout(all)
//刷新头为ImageView
//显示部分为RelativeLayout(button)

//获取控件
RelativeLayout relativeLayout_all=findViewById(R.id.relative_all);
RelativeLayout relativeLayout_button=findViewById(R.id.relative_button);
Button button=findViewById(R.id.button);
ImageView imageView=findViewById(R.id.imageView);

//获取宽度高度
WindowManager windowManager= (WindowManager) getSystemService(WINDOW_SERVICE);
DisplayMetrics metrics=new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(metrics);
int screenWidth=metrics.widthPixels;
int screenHeight= metrics.heightPixels;
imageViewHeight=screenWidth;

//设置
//总高度设置
ConstraintLayout.LayoutParams layoutParams_all= (ConstraintLayout.LayoutParams) relativeLayout_all.getLayoutParams();
layoutParams_all.height=screenHeight+screenWidth;
relativeLayout_all.setLayoutParams(layoutParams_all);
//显示部分高为屏幕高
RelativeLayout.LayoutParams layoutParams_button= (RelativeLayout.LayoutParams) relativeLayout_button.getLayoutParams();
layoutParams_button.height=screenHeight;
relativeLayout_button.setLayoutParams(layoutParams_button);
//头部分为屏幕宽
RelativeLayout.LayoutParams layoutParams_image= (RelativeLayout.LayoutParams) imageView.getLayoutParams();
layoutParams_image.height=imageViewHeight;
imageView.setLayoutParams(layoutParams_image);
//隐藏部分
relativeLayout_all.setPadding(0,0-imageViewHeight,0,0);

//Handler用于UI变更
Handler handler=new Handler(){
    public void handleMessage(@NonNull Message msg) {
        switch (msg.what){
            case 1:button.setEnabled(false);break;
            case 2:button.setEnabled(true);break;
            case 3:relativeLayout_all.setPadding(0,msg.arg1,0,0);
        }
    }
};

//按钮监听器
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        Thread thread=new Thread(){
            public void run() {
                //按钮失效
                Message message=new Message();
                message.what=1;
                handler.sendMessage(message);
                //刷新头下降
                int nowTop=0-imageViewHeight;
                while (true){
                    nowTop=nowTop+8;
                    if(nowTop>=0){
                        nowTop=0;
                    }
                    message=new Message();
                    message.what=3;
                    message.arg1=nowTop;
                    handler.sendMessage(message);
                    if(nowTop==0){
                        break;
                    }
                    try {
                        Thread.sleep(40);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
                //刷新头上升
                while (true){
                    nowTop=nowTop-8;
                    if(nowTop<=0-imageViewHeight){
                        nowTop=0-imageViewHeight;
                    }
                    message=new Message();
                    message.what=3;
                    message.arg1=nowTop;
                    handler.sendMessage(message);
                    if(nowTop==0-imageViewHeight){
                        break;
                    }
                    try {
                        Thread.sleep(40);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
                //按钮显示
                message=new Message();
                message.what=2;
                handler.sendMessage(message);
            }
        };
        thread.start();
    }
});

到了这里,关于Padding负值遮挡视图(下拉刷新头部)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android 实现 RecyclerView下拉刷新,SwipeRefreshLayout上拉加载

    上拉、下拉的效果图如下: 使用步骤 1、在清单文件中添加依赖 implementation ‘com.android.support:recyclerview-v7:27.1.1’ implementation “androidx.swiperefreshlayout:swiperefreshlayout:1.0.0” 2、main布局 item.xml footview.xml(底部提示) 2、MyAdapter 3、MainActivity实现

    2024年02月13日
    浏览(46)
  • 【Android开发基础】说说模块设计(下拉刷新、图片查看、布局设计)

    描述:设计一个简单说说功能模块 需求: 1、能够下拉刷新,更新数据 2、一条说说里允许包含多张图片,图片能够放大查看 难度:初级 知识点: 1、Swiperefreshlayout 2、适配器Adapter 3、对话框Dialog 4、文字图标Icon 1、下拉刷新 思路        使用官方提供的解决方案SwipeRefre

    2024年02月08日
    浏览(41)
  • css绘制下拉框头部三角(分实心/空心)

    1:需求图: 手绘下拉框 带三角 2:网上查了一些例子,但都是实心的, 可参考,如图: (原链接: https://blog.csdn.net/qq_33463449/article/details/113375804) 3:简洁版的: a: 实心: b: 空心: 我的页面代码 到此完美结束, 希望对你有所帮助 !

    2024年01月21日
    浏览(32)
  • 在el-dialog中使用tinymce 点击工具栏下拉框被遮挡

    在el-dialog中使用tinymce控件时,会出现点击工具栏下拉框出现在弹窗下一层,审查元素之后发现是tinymce的下拉框z-index优先级低于el-dialog的z-index导致的,所以需要增加tinymce的下拉框的z-index值。 通过审查元素得到,需要修改tox-tinymce-aux元素的优先级: 这样就可以了:

    2024年02月07日
    浏览(37)
  • 微信小程序——页面事件,.启用下拉刷新监听页面的下拉刷新事件,上拉触底事件,停止下拉刷新的效果

    下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。 启用下拉刷新有两种方式: a.全局开启下拉刷新 在 app.json 的window 节点中,将 enablePullDownRefresh 设置为 true. b.局部开启下拉刷新 在页面的.json 配置文件中,将 enablePull

    2024年01月25日
    浏览(61)
  • 【微信小程序插件】下拉刷新、下拉加载

    今天在优化小程序的列表时候,想要把原生的 scroll-view 组件替换成一个下拉刷新的组件,然后就找了一下,果然有大神已经封装好。coolui-scroller 就是这样满足需求的一款插件,但是微信官网给出的描述以及安装引入的方式,会造成依赖安装失败,报错: 构建npm提示错误,未

    2024年02月08日
    浏览(85)
  • 小程序中scroll-view的下拉刷新和小程序页面的下拉刷新开启方法

    scroll-view的下拉刷新 video.wxml中 video.js中 页面的下拉刷新 video.json中添加enablePullDownRefresh为true就可以开启

    2024年02月16日
    浏览(47)
  • 小程序下拉刷新的实现

    1.使用onPullDownRefresh()这个方法来实现下拉刷新 例子如下:  注意事项:需要将要加载的函数在 onPullDownRefresh() 这个事件方法里面调用。 2.使用wx.stopPullDownRefresh()停止下拉刷新 使用方式需要在你页面调用接口的最后一个方法中执行,就可实现。 3.其中最重要的一步,最容易被忽

    2024年02月15日
    浏览(45)
  • 小程序如何实现下拉刷新

    要在小程序中实现下拉刷新功能,您可以使用小程序提供的页面生命周期函数和相关 API 来实现。下面是一般的步骤: 在页面的 JSON 配置文件中开启下拉刷新 在对应页面的 JavaScript 文件中,监听下拉刷新事件 onPulDownRefresh: 在onPullDownRefresh 函数中编写下拉刷新的逻辑,例如发

    2024年02月06日
    浏览(34)
  • 微信小程序学习实录2(下拉刷新、下拉加载更多、小程序事件、PHP后端代码、刷新无数据解决方案)

    lazyCodeLoading基础库 2.11.1 及以上版本支持,2.11.1 以下兼容但无优化效果 通常情况下,在小程序启动期间,所有页面及自定义组件的代码都会进行注入,当前页面没有使用到的自定义组件和页面在注入后其实并没有被使用。自基础库版本 2.11.1 起,小程序支持有选择地注入必要

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包