sla*_*der 5 android android-layout android-view
我最近不得不制作一个自定义视图,该视图将在LinearLayout中显示一系列ImageView-水平固定高度,将父级宽度线性布局与固定大小的图像匹配。我实现了以下内容:
protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) {
super.onSizeChanged(width, height, oldWidth, oldHeight);
removeAllViews();
for (int i = 0; i < imagesCount; i++) {
ImageView image = createImageView();
addView(image);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当LinearLayout变为可见时,子视图将不可见,并且其中的任何一个都不会调用onMeasure。如果我在后台打开应用程序并重新打开,则视图将正确显示,并为每个孩子调用onMeasure。
如果从onSizeChanged调用requestLayout()不起作用,那么我不得不在onSizeChanged的末尾添加以下hack:
post(new Runnable() {
@Override
public void run() {
requestLayout();
}
});
Run Code Online (Sandbox Code Playgroud)
(通过requestLayout()从onSizeChanged()调用时无效吗?)
问题:
onSizeChanged()是否是添加addViews()的合适位置?否则,哪个地方更好?
有没有更好的方法来强制父视图在onSizeChanged之后不使用post()来度量其子级?
还有一个奖金问题
我使用了以下链接和其他一些stackoverflow讨论:https : //developer.android.com/guide/topics/ui/how-android-draws.html https://plus.google.com/+ArpitMathur/posts / cT1EuBbxEgN
| 归档时间: |
|
| 查看次数: |
442 次 |
| 最近记录: |