0

我有一个LinearLayout带有OnClick处理程序的视图,我想在触发 OnClick 事件时以编程方式在 LinearLayout 之后添加一个视图。

public void onClick(View view) {
    LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    LinearLayout info = (LinearLayout) li.inflate(R.layout.infolayer, null);
    // view.addViewAfter(info)
}

info是我要添加的视图。view是点击的视图,之后我要添加info.

我怎样才能做到这一点?

4

3 回答 3

2

如果你想在当前线性布局之后添加一个视图,那么首先获取线性布局所在的父布局的 id。

例如,让您在相对布局(具有 id parentlayout)中拥有 ID 为“ll”的线性布局,然后在按钮上单击您想在衬垫布局下添加文本视图

public void onClick(View view) {

RelativeLayout rl=new RelativeLayout(this);

TextView tv=new TextView(this)
//set param value ur requirement
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.BELOW,R.id.ll);
}
于 2014-01-09T19:30:28.067 回答
0

假设您有已知数量的线性布局,您是否可以将它们放在 XML 资源中并将它们标记为“已删除”。当事件发生时,使它们可见。当它们被标记为消失时,它们不应该占用任何屏幕空间。

于 2010-03-24T12:59:19.263 回答
-1

您可以通过编码插入,而无需膨胀。您可以创建任何类型的视图,调用构造函数并传递上下文。在构建视图时,对上下文的引用可以作为字段存储在视图中。这样你就可以随时创建你的视图。

要将视图添加到 中LinearLayout,您只需调用addView. 之后,如果您想删除它,只需调用removeView.

但是onClick事件是在LinearLayout对象内部吗?这可能是一个问题,因为内部的视图LinearLayout可能会在事件到达您的方法之前消耗事件。请参阅这篇文章以了解这一点。

于 2010-11-14T03:03:20.040 回答