我有这样的XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000" >
<com.XXXXXXXXXXX.view
android:layout_width="200dp"
android:background="#ffffff"
android:layout_height="400dp"
android:layout_centerInParent="true" />
我在方法onMesure中得到了视图高度,如下所示:
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (!isMeasured)
{
isMeasured = true;
mViewHeight = getMeasuredHeight();
mViewWidth = getMeasuredWidth();...}
mViewWidth是正确的(600px),但mViewHeight错误(1626px)。
有人可以给我一些指示吗?
Tks很多。
答案 0 :(得分:2)
getMeasuredHeight()
将返回孩子所需的高度,而不一定是它实际得到的高度。您还将获取第一个测量值并将宽度/高度设置为该值。出于不同原因,可以多次调用onMeasure
。目的是根据给定的MeasureSpec
约束说明您的视图需要多少高度/宽度。 onLayout
稍后会在您父母真正想要的地方被调用,这可能与您在onMeasure
中所要求的不符。
此外,视图已经有getWidth()
和getHeight()
,它们在布局传递后有效。您需要自己的mViewWidth
和mViewHeight
吗?