Android 基础知识 十九

来源:互联网 发布:手机淘宝的付款方式 编辑:程序博客网 时间:2024/05/07 18:35
在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());