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

编程入门 行业动态 更新时间:2024-10-10 05:19:17

Padding<a href=https://www.elefans.com/category/jswz/34/1707070.html style=负值遮挡视图(下拉刷新头部)"/>

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

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

下拉刷新头部的实现:


(1) 获取屏幕大小。
(2) 设置 刷新头高度(定值)
     设置 显示部分高度为/屏幕高度(定值)
     设置 整体高度 为刷新头高与屏幕高之和(定值)
(3) 整体的 paddlingTop 设为负值时即可遮住刷新头。(为0-刷新头高时遮住全部刷新头)
(4) 整体的paddingTop值进行动态设置:
0-刷新头高 -> 不断增加 -> 0(完全展示) -> 不断减少 -> 0-刷新头高

//例
//整体为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负值遮挡视图(下拉刷新头部)

本文发布于:2023-11-17 14:08:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1643513.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:负值   遮挡   视图   头部   Padding

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!