private void scaleAllViews(ViewGroup parentLayout) {
int count = parentLayout.getChildCount();
Log.d(TAG, "scaleAllViews: "+count);
View v = null;
for (int i = 0; i < count; i++) {
try {
v = parentLayout.getChildAt(i);
if(((ViewGroup)v).getChildCount()>0){
scaleAllViews((ViewGroup)v);
}else{
if (v != null) {
v.setScaleY(0.9f);
}
}
} catch (NullPointerException e) {
}
}
}
我创建了一个递归函数来访问视图组的子项,但parentLayout.getChildAt(i);
返回一个View
,其中也包含子项,所以我需要访问它,但是在转换后我得到了错误java.lang.ClassCastException: android.support.v7.widget.AppCompatImageView cannot be cast to android.view.ViewGroup
答案 0 :(得分:2)
在转换为ViewGroup
之前,您需要检查它是否为ViewGroup
。
if(v instanceof ViewGroup) {
// now this is a safe cast
ViewGroup vg = (ViewGroup) vg;
// ... use this ViewGroup
} else {
// It's some other type of View
}
答案 1 :(得分:2)
ViewGroup是View的子类。因此,如果你拥有的对象是ViewGroup的一个实例,那么你当然可以。
在进行转换之前,应检查视图是否是ViewGroup的实例,以确保不会引发异常。