Fragment对于Listview未满一屏添加脚布局,满屏将View固定在屏幕下方的解决方案
来源:互联网 发布:巨人网络最新招聘信息 编辑:程序博客网 时间:2024/05/18 03:59
首先我们看两张效果图
dp转px px 转dp
第一张是当超过一屏幕时候的效果固定view
第二张是没超过一屏的时候添加的footerview
具体实现思路就是获取当前屏幕高度并转换成dp在除以你每一个item项的高度
用得到的值(减一是为了最后一项不显示不完全导致出现的问题)去和你的数据集合做比较 当大于等于的时候就添加footerview否则就固定布局下面请看代码 当然我们也可以获取listview item的高度来实现
注 xml中的高度单位是dp 获取到的是px 所以要转换成dp 下面会附上方法
如果有标题要将标题高度减去才能得到最多显示的数量
DisplayMetrics dm = new DisplayMetrics(); // 取得窗口属性 getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); // 窗口的宽度 int screenWidth = dm.widthPixels; // 窗口高度 int screenHeight = dm.heightPixels; //获取listview的item的高度 View item=list.getAdapter().getView(0, null, list); item.measure(0, 0); System.out.println(item.getMeasuredHeight()+""); //得到一屏幕上最多放的数据数量 如有标题请将标题高度减去 int count = px2dip(MainActivity.this, screenHeight) / px2dip(MainActivity.this, item.getMeasuredHeight()); System.out.println(count + "count"); if (count - 1 >= data.size()) { findViewById(R.id.btn).setVisibility(View.GONE); View views = LayoutInflater.from(MainActivity.this).inflate( R.layout.sitem, null); list.addFooterView(views); } else { findViewById(R.id.btn).setVisibility(View.VISIBLE); }
dp转px px 转dp
/** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * 将px值转换为sp值,保证文字大小不变 * * @param pxValue * @param fontScale(DisplayMetrics类中属性scaledDensity) * @return */ public static int px2sp(float pxValue, float fontScale) { return (int) (pxValue / fontScale + 0.5f); } /** * 将sp值转换为px值,保证文字大小不变 * * @param spValue * @param fontScale(DisplayMetrics类中属性scaledDensity) * @return */ public static int sp2px(float spValue, float fontScale) { return (int) (spValue * fontScale + 0.5f); }
阅读全文
0 0
- Fragment对于Listview未满一屏添加脚布局,满屏将View固定在屏幕下方的解决方案
- 对于Listview未满一屏添加footerView 满了一屏幕将View固定在屏幕下方的解决方案
- Flexbox如何将页面底部固定在屏幕最下方
- LinearLayout布局中将一个控件放在屏幕的最下方-Android
- [Android][细节][布局]View的getDrawingCache()方法不会在bitmap的透明区域绘制该View下方的View
- 在ListView的后面添加View
- 蒙层Flexbox将页面底部固定在屏幕最下方,内容占满屏后紧跟其后
- 两种方式实现footer固定在页面最下方布局
- 在Fragment里面实现listView布局
- Android在指定View的下方显示PopupWindow
- 在listview的前面或后面添加布局控件
- 纯css让页脚固定在最下方
- listview条目未满全屏时,button在listviwe下方,条目超过屏幕时,button在屏幕底端
- 在ListView、ScrollView中动态存在高度不固定的View,高度显示异常
- 在根布局下面添加fragment
- 在控件下方添加阴影
- 在每页的表格下方添加制表人信息
- 2015-10-30-在Launcher的固定View上添加Widget_墨迹天气
- vue2.0+element+node+webpack搭建的一个简单的后台管理界面
- 升级安装php7要考虑的3个重要方面
- 网站
- 亚马逊全球开店卖家峰会昨日举行,内附2018亚马逊开店入驻通道
- 史上最牛JAVA思维导图学习笔记
- Fragment对于Listview未满一屏添加脚布局,满屏将View固定在屏幕下方的解决方案
- js实现下载远程文件
- setContentView对应的getContentView
- SpringBoot之Data JPA介绍、开发
- 项目外面显示红叉,但是项目内容没有报错
- 用作业来停止作业
- python中的循环与break和continue的关系和用法
- HikariCP、MySQL Configuration 性能优化
- enclipse 常用快捷键