【发布时间】:2016-06-15 00:55:02
【问题描述】:
这样的问题有很多,但它们都解决了在返回根布局之前在onCreateView() 中添加一个视图。我想在代码执行的中间添加一个视图,在onClick()
注意这是一个片段,这就是为什么没有onCreateView()我无法更新 UI:
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
//RelativeLayout Setup
RelativeLayout relativeLayout = new RelativeLayout(getActivity());
relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT));
//ImageView Setup
ImageView imageView = new ImageView(getActivity());
//setting image resource
imageView.setImageResource(R.drawable.lit);
//setting image position
imageView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT));
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.BELOW, R.id.button);
imageView.setLayoutParams(params);
//adding view to layout
relativeLayout.addView(imageView);
break;
}
}
在这里我得到一个布局实例并对其进行修改。但是,我无法将此修改后的片段布局应用回应用程序 UI。 Fragment UI修改后如何更新应用界面?
感谢您的宝贵时间。
【问题讨论】:
-
Fragment的View与其他View一样。无论您动态创建什么Views,只需将其添加到屏幕上的ViewGroup。 -
@MikeM。谢谢迈克,但即使我保存
ViewGroup container的实例并调用container.addView(relativeLayout),它也不起作用。我该怎么办?谢谢! -
如果您的意思是将
container传递给onCreateView(),您可能不想使用它。那是Activity中的ViewGroup,它包含你的Fragment的整个View。你会想要使用ViewGroup- 例如,LinearLayout、RelativeLayout等 - 这是你在onCreateView()中膨胀的布局。 -
@MikeM。但是我已经在我的问题的代码中这样做了,对吧?我将它添加到相对布局,这是我的片段的根......对吗?
-
不,您正在那里创建一个全新的
RelativeLayout。那不是在onCreateView()中创建的。
标签: android android-layout android-fragments