我很好奇如何限制这些方法的调用onMeasure()
,onLayout()
,onDraw()
。因为我知道,如果添加任何其他View
,每次View
需要调整大小时都会调用它们。我在想吗?我想知道如果onMasure()
的其余部分具有完全相同的尺寸,如何避免检查尺寸并设置高度和宽度(特别是在Views
期间)。在我的应用程序中,View
处于片段中,我有<ScrollView>
而我<include>
更多layouts
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ScrollView android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<include layout="@layout/firts"/>
<include layout="@layout/second"/>
<include layout="@layout/third"/>
</LinearLayout>
</ScrollView>
</LinearLayout>
负责设置视图的方法大约被调用10次。我只想设置维度一次,因为我@Override
他们要在那里做更多的工作并加载HTML
的选项(这些视图是WebView
&#39 ; S)。我想只加载一次数据,但由于标题中的方法被多次调用,我会多次加载。它会在我的屏幕上产生某种快门。是否有任何技巧来检查尺寸,如果它们不同,那么再次设置它们还是有办法防止调用这些方法?
@EDIT
这就是我在onMeasure()
方法中所做的事情:
@Override
protected void onMeasure (int widthMeasureSpec,
int heightMeasureSpec){
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
System.out.println("Measure size...");
float density = getResources().getDisplayMetrics().density;
float height = getResources().getDisplayMetrics().heightPixels;
setMinimumWidth(Math.round(getWidth()/density));
setMinimumHeight(Math.round(height/density*2/5));
this.HTML.prepareViewWidth(Math.round(getWidth()/density), Math.round(height/density*2/5));
}
其他HTML(需要的基本脚本)已加载到onAttachedToWindow
但我不知道在哪里放置此方法:loadDataWithBaseURL
。我尝试了上面提到的每个方法onMeasure,onLayout,onDraw,但这样做了10次。