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>