【问题标题】:Android: How to programmatically add button to viewAndroid:如何以编程方式添加按钮以查看
【发布时间】:2011-01-23 19:48:31
【问题描述】:

在我的 Android 活动中,我创建了一个扩展 SurfaceView 的自定义视图(使用 MonoDroid,因此语法略有不同):

class FriendsView : SurfaceView
{
    ...

    public FriendsView(Context context) : base(context)
    {

        ... create my custom view ...

    }


}

在我的 Activity 类中,我将内容视图设置为视图:

protected override void OnCreate(Bundle bundle)
{

    base.OnCreate(bundle);

    ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.FillParent);

    FriendsView friendsView = new FriendsView(this);

    SetContentView(friendsView, layoutParams);

}

我想在视图中添加一个按钮,但不知道如何执行此操作。我读过的所有内容都是从 main.xml 的角度开始的,但我不知道如何使用它来声明一个在我的视图中可见的按钮。同样,我在 Activity 或 View 类中都找不到可以让我以编程方式添加 Button 对象的方法。

我确信我在概念上遗漏了一些东西,但欢迎任何帮助我朝着正确的方向前进。

【问题讨论】:

  • 对不起,你把你的构造函数ViewGroup.LayoutParams这样的原型带到哪里了?
  • 你可以在here找到你的答案。

标签: android button view add


【解决方案1】:

如果我理解正确,您可以看到您的friendsView 很好,但是您想给它添加一个按钮? 我不知道你的 FriendsView 是什么类型的 View,但假设它是你可以添加子元素的东西(比如 linearLayout 或其他东西),你应该能够做到这一点(只是从我的头顶)

 //assuming you have a friendsView object that is some sort of Layout.
 Button yourButton = new ImageButton(this);
 //do stuff like add text and listeners.

 friendsView.addView(yourButton);

如果您想在friendsView 中添加子元素,您可以使用findViewById() 找到它(如果您想像这样找到元素,请添加ID)

【讨论】:

  • 嗨,Nanne - 是的,没错。我的视图工作正常,但我想为其添加一些功能,包括添加一个按钮。
  • 所以我建议使用 addView 功能:)
  • 我尝试了您的建议,但我的自定义视图中没有 addView 方法(它扩展了 SurfaceView)。 SurfaceViews 不支持按钮吗?
  • 好吧,也许将其视为 XML 布局更容易:您可能有一个带有 2 个子级的 linearLayout:一个 surfaceView 和一个按钮。因此,您必须添加一个“主”视图,然后添加您的自定义视图和按钮。也许先尝试使用 XML 完成它。
  • 谢谢 - 我会试一试。我想我很惊讶您不能将 Button 添加到 SurfaceView,但也许我不太了解它们的预期目的!
【解决方案2】:

SurfaceView 不能有子视图,只有基于 ViewGroup 的视图可以(LinearLayout,RelativeLayout,...) 我猜您想为 ContentView() 使用 LinearLayout,或者更确切地说是 RelativeLayout(如果 Button 应该在 SurfaceView“内部”)。对于LinearLayout,您必须注意布局方向(setOrientation()),对于RelativeLayout,您必须特别注意子项的LayoutParams,它将定义子项在RelativeLayout中的相对坐标/位置。

最好是从 XML 中扩充所有内容。您还可以使用 XML 文件中的完整类名来扩充您的“自己的”视图。基本上不用自己拼一个ContentView。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多