當然,你可以添加儘可能多的按鈕和其他小部件到你有的FrameLayout
。由於FrameLayout
允許視圖堆疊,因此您在xml文件中添加的組件現在位於以編程方式添加的視圖之後。這裏是你如何創建和動態添加小工具:
// find your framelayout
frameLayout = (FrameLayout) findViewById(....);
// add these after setting up the camera view
// create a new Button
Button button1 = new Button(this);
// set button text
button1.setText("....");
// set gravity for text within button
button1.setGravity(Gravity.....);
// set button background
button1.setBackground(getResources().getDrawable(R.drawable.....));
// set an OnClickListener for the button
button1.setOnClickListener(new OnClickListener() {....})
// declare and initialize LayoutParams for the framelayout
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT);
// decide upon the positioning of the button //
// you will likely need to use the screen size to position the
// button anywhere other than the four corners
params.setMargins(.., .., .., ..);
// use static constants from the Gravity class
params.gravity = Gravity.CENTER_HORIZONTAL;
// add the view
fl1.addView(button2, params);
// create and add more widgets
....
....
編輯1:
有一招可以用在這裏:
// Let's say you define an imageview in your layout xml file. Find it in code:
imageView1 = (ImageView) findViewById(....);
// Now you add your camera view.
.........
// Once you add your camera view to the framelayout, the imageview will be
// behind the frame. Do the following:
framelayout.removeView(imageView1);
framelayout.addView(imageView1);
// That's it. imageView1 will be on top of the camera view, positioned the way
// you defined in xml file
這是因爲:
子視圖繪製在堆棧中,最近添加的子項位於頂部(來自android r在FrameLayout上的源頁面)
那麼你會說動態添加元素是唯一的方法嗎? – user2426316
@ user2426316否。請參閱上面的**編輯1 **。 – Vikram