问题描述
- android 中 继承ViewGroup的问题。
-
我自己写了一个控件mylayout继承frameLayout.里头有一个imageView 和一个 textView .
我新建一个Activity 在其Layout里头 addView(mylayout) ;
控件可以正常显示。但是我新建一个类mygroup 继承 ViewGroup。
在mygroup里头的构造函数 addView(mylayout)。
只能显示出framelayout 不能显示出 imageView 和 textView.大神们! 求教!
解决方案
首先你要了解的是自定义的ViewGroup和自定义View的区别!!
第一View是所有UI组件的基类。
第二ViewGroup是容纳这些组件的容器,当然ViewGroup本身也是继承自View的。
正如你上面所说的,你新建一个类mygroup 继承 ViewGroup那么你需要测量你的ViewGroup的真实容器的宽度和高度;
或者是说你可以循环遍历所有的子View的大小然后测量出真正的容器大小。然后你可以让其正常显示,又或者你可以重新进行layout布局。
看不懂的话,可以回复我,我会再回复你的
解决方案二:
你要把你的空间addview到framelayout里,然后把framelayoutaddview到mygroup里
解决方案三:
在构造函数里addview是不行的,因为创建构造函数的时候FrameLayout还没有加载呢,所以自然就看不到ImageView和TextView
解决方案四:
LayoutInflater.from(context).inflate(R.layout.my_framelayout, this) 者菊花没意义啊
你应该 view a = LayoutInflater.from(context).inflate(R.layout.my_framelayout, this,false);
addview(a);
解决方案五:
我自己写了一个控件mylayout继承frameLayout.
里头有一个imageView 和一个 textView .
我新建一个Activity 在其Layout里头 addView(mylayout) ;
控件可以正常显示。
——》》这个前提可以知道你的自定义mylayout大致方向没有写错,其实里面可能你也没写啥东西,仅仅是addView而已
但是我新建一个类mygroup 继承 ViewGroup。
在mygroup里头的构造函数 addView(mylayout)。
只能显示出framelayout 不能显示出 imageView 和 textView.
大神们! 求教!
——》》addView(mylayout)后只显示parentView而不显示childView
原因可能有:
1、parentView的onlayout方法写的不怎么完全正确,例如只考虑到了正常的传入MeaSureSpec,检查你的lolayout方法
2、直接在mygroup里头的构造函数 addView(mylayout),其LayoutPamas可能没设置,是一个初始值。导致parentView传给childView时的meaSureSpec的值让其测量是0不显示。。。