我们都知道,在View
中提供了getWidth与getHeight
方法,但是这两个方法获取到的都是View
的高度,而不是View
中内容的高度,那么内容的高度如何获取呢??
目录
1. 什么是内容的高度?
如图中,绿色的为View
,Content
为内容,如果View
是ViewGroup
,content
可看做所有子节点
2. 为什么获取内容宽高
当我们自定义滑动时,期望滑动到内容最底部时,不能再往下滑动,故需要获取内容的宽高来限定。
3. 如何获取内容高度?
3.1 ViewGroup获取内容高度?(以竖直方向的LinearLayout为例)
不同的ViewGroup
会有不同的内部规则,需要根据不同的ViewGroup
通过不同的规则获取。
linearLayout.post(new Runnable() {
@Override
public void run() {
View last = linearLayout.getChildAt(linearLayout.getChildCount() - 1);
int contentHeight = last.getTop() + last.getHeight() + linearLayout.getPaddingBottom();
}
});
3.2 View
的内容高度获取(以TextView为例)
很多View
的内容宽高是和View
的宽高一致的,但是有些时候,会不统一,比如长文字,文字总高度高于 TextView
的高度时。如果其他View
需要获取内容高度与宽度,需要了解内部实现,并依据推算出获取方法。
int contentHeight = textView.getLayout().getHeight() // 文字的高度
+ textView.getPaddingTop()
+ textView.getPaddingBottom();
推荐视频教程:
广告:
我使用的装备:程序员必备 | 不伤关节 | 手感好 | 静电容 | Plum键盘|Niz键盘 戳我