layout-android 中 继承ViewGroup的问题。

问题描述

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不显示。。。

时间: 2016-05-12

layout-android 中 继承ViewGroup的问题。的相关文章

android 中 include layout 的问题

问题描述 android 中 include layout 的问题 程序中的 layout 代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="

android 中的 main layout 和 categories

问题描述 android 中的 main layout 和 categories 在 main layout 中我使用: <PreferenceCategory android:summary="@string/menu_language_settings" android:title="@string/menu_language_settings" > 现在我只使用: <LinearLayout xmlns:android="http:

继承ViewGroup重写onMeasure方法的详解

我们继承重写ViewGroup的目的是要做自定义控件,所以我们有必要先看一下安卓View的绘制过程: 首先当Activity获得焦点时,它将被要求绘制自己的布局,Android framework将会处理绘制过程,Activity只需提供它的布局的根节点. 绘制过程从布局的根节点开始,从根节点开始测量和绘制整个layout tree,绘画通过遍历整个树来完成,不可见的区域的View被放弃. 每一个ViewGroup 负责要求它的每一个孩子被绘制,每一个View负责绘制自己. 因为整个树是按顺序遍

Android 中TabLayout自定义选择背景滑块的实例代码_Android

 TabLayout是Android 的Material Design包中的一个控件,可以和V4包中的ViewPager搭配产生一个联动的效果.这里我自定义了一个滑块能够跟随TabLayout进行滑动选择的SliderLayout.效果见下图(白色方框): 下面是SliderLayout的源码: import android.content.Context; import android.content.res.TypedArray; import android.graphics.drawab

Android 中 TabHost与ViewPager结合实现首页导航效果_Android

今天发的是TabHost结合ViewPager实现首页底部导航的效果,虽然说网上有很多这样的Demo,不过呢,我还是要把自己练习写的发出来,没错!就是这么任性: 先上效果图,如下: 代码里面有注释,就不过多解释了,说几点需要注意的问题 1:TabHost .TabWidget.FrameLayout一定添加id这个属性,否则会报错 android:id="@android:id/tabhost" android:id="@android:id/tabcontent"

Android中使用CircleImageView和Cardview制作圆形头像的方法_Android

圆形头像在我们的日常使用的app中很常见,因为圆形的头像比较美观. 使用圆形图片的方法可能有我们直接将图片裁剪成圆形再在app中使用,还有就是使用自定义View对我们设置的任何图片自动裁剪成圆形. 效果图: 这里使用github上CircleImageView github:https://github.com/hdodenhof/CircleImageView CardView顾名思义卡片式的View,CardView继承的是FrameLayout,所以摆放内部控件的时候需要注意一下 可以设置

Android中ListView绑定CheckBox实现全选增加和删除功能(DEMO)_Android

ListView控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adapter的用法,加了很多的判断等等等等-.我们先来看看实现的效果吧! 好的,我们新建一个项目LvCheckBox 我们事先先把这两个布局写好吧,一个是主布局,还有一个listview的item.xml,相信不用多说 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/

android自定义 iew-有没有Android中自定义布局的详细教程!

问题描述 有没有Android中自定义布局的详细教程! 有没有Android中自定义布局的详细教程!我想写一个课程表布局,在网上找了几个demo,但是里面的自定义布局看不明白! 解决方案 Composite View Composite views (也被称为 compound views) 是众多将多个view结合成为一个可重用UI组件的方法中最简单的.这种方法的实现过程是这样的: 继承相关的内建的布局. 在构造函数里面填充一个 merge 布局. 初始化成员变量并通过 findViewByI

【Android】 Android中spinner下拉列表的使用

     今天学习了Spinner组件,使用Spinner相当于从下拉列表中选择项目,下面演示一下Spinner的使用(分别使用ArrayAdapter和自定义Adapter实现) (一):使用ArrayAdapter进行适配数据:    ①:首先定义一个布局文件: [html] view plaincopy <span style="font-size:16px;"><?xml version="1.0" encoding="utf-8