Android:在视图本身后添加视图onclick

时间:2010-03-24 12:49:01

标签: android layout onclick android-linearlayout

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

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

我该怎么做?

3 个答案:

答案 0 :(得分:2)

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

例如,让你在相对布局中使用id为“ll”的线性布局(具有id parentlayout),并在按钮上单击你想在线条布局下添加文本视图

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);
}

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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

要将视图添加到LinearLayout,您只需拨打addView即可。然后,如果您想删除它,只需致电removeView

但是onClick事件在LinearLayout对象中?这可能是一个问题,因为LinearLayout内的视图可能会在事件到达您的方法之前消耗该事件。请参阅此post以了解相关信息。