我有一个带有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
。
我该怎么做?
答案 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以了解相关信息。