Android 如何创建包含元素的子视图?

Android 如何创建包含元素的子视图?,android,view,android-linearlayout,parent-child,Android,View,Android Linearlayout,Parent Child,我遇到过谷歌,它演示了通过使用onClick添加或删除子视图来创建子视图的动画转换。作为学习过程的一部分:我接受了代码,将其分解,并做了一些更改(我不是一个复制粘贴的程序员) 我的问题是:在创建子视图时,如何将文本视图、按钮和其他各种元素添加到子视图中 (如果您感兴趣,请从谷歌下载项目:) 以下是我的活动: /** * Custom view painted with a random background color and two different sizes which are *

我遇到过谷歌,它演示了通过使用
onClick
添加或删除子视图来创建子视图的动画转换。作为学习过程的一部分:我接受了代码,将其分解,并做了一些更改(我不是一个复制粘贴的程序员)

我的问题是:在创建子视图时,如何将
文本视图
按钮
和其他各种元素添加到子视图中

(如果您感兴趣,请从谷歌下载项目:)

以下是我的活动:

/**
 * Custom view painted with a random background color and two different sizes which are
 * toggled between due to user interaction.
 */
public class ColoredView extends View {

    private boolean mExpanded = false;

    private LinearLayout.LayoutParams mCompressedParams = new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, 50);

    private LinearLayout.LayoutParams mExpandedParams = new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, 200);

    private ColoredView(Context context) {

        super(context);

        int red = (int)(Math.random() * 128 + 127);
        int green = (int)(Math.random() * 128 + 127);
        int blue = (int)(Math.random() * 128 + 127);
        int color = 0xff << 24 | (red << 16) |
                (green << 8) | blue;
        setBackgroundColor(color);

        setLayoutParams(mCompressedParams);


        setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Size changes will cause a LayoutTransition animation if the CHANGING transition is enabled
                setLayoutParams(mExpanded ? mCompressedParams : mExpandedParams);
                mExpanded = !mExpanded;
                requestLayout();

            }
        });
    }
}
这是我的XML,它具有
LinearLayout
,所有子视图都在其中创建:

<LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:animateLayoutChanges="true"
            android:id="@+id/eventContainer">
    </LinearLayout>

通过向linearlayout添加按钮或编辑文本,它将其视为一个全新的视图,每个视图只允许一个对象。有没有一种方法可以把一堆东西塞进一个布局


我对获取视图和布局的
上下文
的概念也有点困惑。。。我可能在这里的某个地方误用了它。

你不能,至少在你当前的代码中不能

您的
ColoredView
类当前扩展了
View
,它不支持拥有自己的子视图。如果要向其中添加子视图,则必须创建一个扩展
ViewGroup
(或ViewGroup的任何子类)的类


一旦类扩展了
ViewGroup
,就可以简单地使用
addView()
方法添加视图,并通过传递
LayoutParams
来对齐视图(如果视图需要复杂的定位,还可以创建自定义的
LayoutParams
).

我将
扩展视图
更改为
扩展视图组
,并添加了onLayout方法。这仍然很难做到,你能给我一些例子或一个教程的链接吗?我不完全确定要搜索什么-一次发生的事情太多了。另外,我是在
onLayout
覆盖中使用
addView()
,还是在类的另一部分中使用?
<LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:animateLayoutChanges="true"
            android:id="@+id/eventContainer">
    </LinearLayout>