当前位置: 首页 > 面试题库 >

是否可以将按钮添加到以编程方式设置的框架布局中?

闾丘博超
2023-03-14
问题内容

这有点难以描述,但我会尽力而为:

我正在开发一个使用自定义相机活动的android应用。在此摄影机活动中,我使用编程方式创建一个表面视图,并将其设置为xml布局文件中定义的框架布局(全屏显示)。

我现在的问题是,如何在框架布局中添加其他元素?仅以编程方式?我问,因为到目前为止,我只能以编程方式添加其他元素。我在xml布局中添加的元素没有出现在屏幕上。它们是否可能恰好位于我添加到框架布局的表面视图的后面?如果是这样,是否有可能将它们带到最前面?

感谢你们!


问题答案:

当然,您可以向其中添加尽可能多的按钮和其他小部件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

发生这种情况是因为:

子视图是在堆栈中绘制的,最近添加的子视图位于顶部(来自FrameLayout的android资源页面)



 类似资料:
  • 我用一些按钮以编程方式创建AlertDialog的LinearLayout。 我想这样做: 但对于这样的代码: 如何以编程方式设置按钮的样式(使用按钮栏)?

  • 问题内容: 如何以编程方式添加一个单击按钮即可执行操作的按钮?将使用什么代码? 我习惯在情节提要中添加一个按钮,然后从那里运行IBAction。 问题答案: 在SpriteKit中添加按钮并响应其点击并不像在UIKit中那样容易。基本上,您需要创建某种类型的对象,以绘制您的按钮,然后检查场景中记录的触摸是否在该节点的范围内。 一个非常简单的场景,中心只有一个红色矩形作为按钮,看起来像这样: 如果您

  • 问题内容: 说我有两个JavaBeans 和。 如果创建一个Person对象的列表,我想编组成这样的东西: 可以使用这里描述的技术: 使用JAXB解组/编组List 通过使用和注释JaxbList,可以将其编组为上述XML。 但是,能够重用相同的类来封送对象列表也很好。实际上,我将有许多其他类型的bean。我可以这样: 但是,理想情况下,最好用类名的复数形式替换“列表”,用类名替换“ item”。

  • 在新的 AppCompat 库中,我们可以按以下方式对按钮进行着色: 如何在代码中以编程方式设置按钮的色调?我基本上尝试根据一些用户输入实现按钮的条件着色。

  • 问题内容: 我有2个包含相同按钮的布局 和 请假设这些都是有效的布局等(我只是添加相关代码。)。 因此,在我的片段中,我将其充气并使用。我想使用在两个场景之间切换。我可以在期间设置in 的监听器。问题是试图在第二个视图中的该按钮上设置一个侦听器。即该侦听器未针对第二个场景(使用)激活,因此我无法在两个场景之间切换。是否有实现此目的的方法? 问题答案: 通常,对同一视图具有多个视图不是一个好主意。这

  • 我想通过编程设置单选按钮的色调。在xml中,有一个名为“buttonint”的属性来完成这项工作。但在程序中,我找不到任何方法来设置单选按钮的色调或颜色。有什么方法可以做到这一点吗?