我正在使用main.xml
向我的活动添加小部件,但出于某些原因,我想以编程方式添加imageView
,这是我的程序,
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView imageView = new ImageView(this);
imageView.setImageResource(R.drawable.building_icon);
imageView.getLayoutParams().height = 100 ;
imageView.getLayoutParams().width = 100 ;
imageView.setBackgroundColor(Color.BLACK);
FrameLayout fl = new FrameLayout(this); // because I am working with frame layout
fl.addView(imageView);
}
我的imageView
没有出现,请我错过哪里?
答案 0 :(得分:2)
您已创建新的FrameLayout
并将ImageView
附加到FrameLayout
,但您的main.xml
未附加任何内容。
要引用FrameLayout fl = (FrameLayout) findViewById(R.id.my_frame_layout);
fl.addView(imageView);
中的一个,请执行以下操作:
main.xml
在<FrameLayout
android:id="@+id/my_frame_layout"
... />
中定义的位置如下:
{{1}}
答案 1 :(得分:1)
您正在使用setContentView
从xml中提升内容,然后创建新的ImageView
并将其添加到不属于原始xml的新FrameLayout
中。
要将ImageView
添加到FrameLayout
,您需要先使用FrameLayout
获取xml中findViewById
的引用:
FrameLayout container = (FrameLayout) findViewById(R.id.frame_layout);
然后您可以使用ImageView
向您添加addView
:
container.addView(imageView);