您好,我有一个可以调整大小的自定义视图,并且视图中有很多子视图
我想问的是如何使用布局参数一起调整父母和孩子的大小?怎么做?我已经尝试使用它来获取视图的宽度,view.getWidth
但view.getHeight
它总是返回零,所以我无法缩放它,以及如何调整子视图的大小与父视图相同?
我希望我的问题足够清楚,但如果您需要其他解释,请将其留在评论中,我将编辑我的问题。
谢谢
您好,我有一个可以调整大小的自定义视图,并且视图中有很多子视图
我想问的是如何使用布局参数一起调整父母和孩子的大小?怎么做?我已经尝试使用它来获取视图的宽度,view.getWidth
但view.getHeight
它总是返回零,所以我无法缩放它,以及如何调整子视图的大小与父视图相同?
我希望我的问题足够清楚,但如果您需要其他解释,请将其留在评论中,我将编辑我的问题。
谢谢
private void resizeChildren(ViewGroup parent, int newWidth, int newHeight) {
// size is in pixels so make sure you have taken device display density into account
int childCount = parent.getChildCount();
for(int i = 0; i < childCount; i++) {
View v = parent.getChildAtIndex(i);
if (v instanceof ViewGroup) {
((ViewGroup)v).LayoutParams = new ViewGroup.LayoutParams(newWidth, newHeight);
}
}
}
当父级的边界发生变化时调用上述方法并将父级传递给它。所有属于ViewGroup
类型的子项都将调整大小。如果需要,您也可以在每个孩子身上递归地调用它。在调整孩子的大小后,您可能需要调用requestLayout()
父母。
使用此代码,您可以使用 LayoutParams ...
LinearLayout header;
LinearLayout.LayoutParams headerParam;
header = (LinearLayout) findViewById(R.id.topheaderimage);
headerParam = new LinearLayout.LayoutParams(200, 100);
TextView headertext = (TextView) findViewById(R.id.text);
header.addView(headerimage, headerParam);