Android 基础知识 十九

本文介绍如何正确在PopupWindow中嵌套弹出另一个PopupWindow,避免因Context问题导致的错误。此外,还提供了取消ViewPager预加载的方法,防止不必要的资源消耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在PopupWindow中弹出另外一个PopupWindow
传统的PopupWindow在获取view的时候是使用

  1. final View view = LayoutInflater.from(this).inflate(R.layout.popuwindow, null);        
  2. pop = new PopupWindow(view, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, true);
复制代码
当弹出第二个PopupWindow的时候,就会报错,原因是当前的context不是一个Activity。所以改成如下的代码即可:

?
代码片段,双击复制
01
LayoutInflater mLayoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);


-----------------------------------------------------------
Android ViewPager 取消预加载

android 新引入的Fragment加入了Viewpager这样的一个组件。至于该控件的功能在这里就不说了。这篇文章主要解决fragment viewpager预加载的问题。

默认的viewpager是会预先加载下一个fragment的控件的,可以通过setOffscreenPageLimit(int limit) 来设置要提前加载的fragment。即是说当limit等于5

的时候,打开第一个fragment的时候就相当于同时打开了其他的4个fragment了。这样切换的时候将会非常流畅。

但是,当每个fragment都需要去联网加载网络数据或者做一些耗时的操作,而且有其他的fragment并不是必须的,用户不一定会打开。这样的话如果还

预加载的话将会浪费资源,用户体验也不好。虽然可以通过setOffscreenPageLimit(0)来设置不提前预加载,但这样的设置没有效果。通过研究ViewPager的

源码,可以设置该类默认的DEFAULT_OFFSCREEN_PAGES = 0,来预防预加载。

-----------------------------------------------------
Android获取TextView的长度

如果用testSize设置汉字的大小,其值用像素表示。用 屏幕宽度的像素/汉字宽度像素就得到了所能显示文字的长度,如果出现字母和特殊符号的时候,这样计算字符串长度就不准确了。
可用下面办法获取长度:
?
代码片段,双击复制
01
02
03
Paint paint = new Paint();
paint.setTextSize(currentTextView.getTextSize());
float size = paint.measureText(currentTextView.getText().toString());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值