从 Android 中的应用在布局中添加视图
Adding views in layout from the app in Android
我想开发一个 Android 应用程序,应用程序 GUI 的起始页将在主布局中包含 4 个垂直布局。现在,在每个布局中,我想从应用程序动态添加 buttons/slider(而不是在源代码中动态添加 buttons/slider)。这意味着,最初所有这 4 个布局都是空白的,当用户将 select 另一个布局中的任何按钮或滑块添加到这 4 个布局中的任何一个时,按钮或滑块将被添加到该布局中。用户将能够在任何垂直布局中添加最多 10 个视图,视图可以是按钮、滑块或自定义视图。
我的尝试:
首先我尝试在启动页的主布局下创建4个垂直布局,我成功了。
我在搜索后还发现可以在 android 的布局中动态添加视图。
dynamically adding a view to activity layout
但大多数示例,通过 运行 循环在 android 中动态添加视图,实例化所需的视图 class,然后将其添加到主布局中。虽然这种方式是在布局中动态添加视图,但是是通过修改源码实现的。
是否可以通过某种方式编写源代码,以便直接从应用程序中完成?因此,当用户单击 在 "layout 1" 中添加一个滑块 时,将在布局 1 中添加一个滑块,然后再次单击 "Add a button"在布局 1 中,将在滑块末尾添加一个按钮。用户将能够自定义按钮或滑块属性。此外,如果用户更改滑块的值,应用程序将记住它的值。
现在,下次打开应用程序时,那些视图将存在于布局中,它们不会被删除并且值将保持不变(例如,勾选的复选框将保持勾选状态),所以我想我还需要某种存储或属性管理器。
我的问题是,是否可以在 android 中执行此操作(因为我在 android 中从未见过此类应用程序),如果可能的话,我该如何实现它?
我是 android 的新手,所以我的知识有限,但我完成了 android 应用程序开发的基础教程,并且我有 eclipse 插件开发经验。
非常感谢。非常感谢你的帮助。
当然可以:
- 每个布局(如 LinearLayout, RelativeLayout etc.) extends the ViewGroup-class, which offers the addView-方法。
- 要向您的其中一个布局添加新视图(如滑块),只需在您的 activity 中以编程方式(通过新建)实例化它并为其分配适当的 LayoutParams
- 要存储用户添加内容的状态,使用起来最简单SharedPreferences - 一个简单的键值存储,它在应用程序的生命周期中保存数据
是的。这个有可能。要动态创建 View
s,您只需扩展 View
的 class 或者只说 new Button(Context, AttributeSet);
(不仅对于 Button 的每个视图都有一个构造函数,它采用一个属性集和一个上下文)。
使用 Layout.addView()
您可以将任何 View
添加到 Layout
。
使用 SharedPreferences,您可以指明 View
属于 Layout
.
如果您决定延长 View's
class,请确保不要在其中做太多事情。我试过一次,它只是给了我一个 OOM
(OutOfMemory 错误),因为我有很多 View
试图同时做一些事情。
我想开发一个 Android 应用程序,应用程序 GUI 的起始页将在主布局中包含 4 个垂直布局。现在,在每个布局中,我想从应用程序动态添加 buttons/slider(而不是在源代码中动态添加 buttons/slider)。这意味着,最初所有这 4 个布局都是空白的,当用户将 select 另一个布局中的任何按钮或滑块添加到这 4 个布局中的任何一个时,按钮或滑块将被添加到该布局中。用户将能够在任何垂直布局中添加最多 10 个视图,视图可以是按钮、滑块或自定义视图。
我的尝试:
首先我尝试在启动页的主布局下创建4个垂直布局,我成功了。
我在搜索后还发现可以在 android 的布局中动态添加视图。
dynamically adding a view to activity layout
但大多数示例,通过 运行 循环在 android 中动态添加视图,实例化所需的视图 class,然后将其添加到主布局中。虽然这种方式是在布局中动态添加视图,但是是通过修改源码实现的。
是否可以通过某种方式编写源代码,以便直接从应用程序中完成?因此,当用户单击 在 "layout 1" 中添加一个滑块 时,将在布局 1 中添加一个滑块,然后再次单击 "Add a button"在布局 1 中,将在滑块末尾添加一个按钮。用户将能够自定义按钮或滑块属性。此外,如果用户更改滑块的值,应用程序将记住它的值。
现在,下次打开应用程序时,那些视图将存在于布局中,它们不会被删除并且值将保持不变(例如,勾选的复选框将保持勾选状态),所以我想我还需要某种存储或属性管理器。
我的问题是,是否可以在 android 中执行此操作(因为我在 android 中从未见过此类应用程序),如果可能的话,我该如何实现它?
我是 android 的新手,所以我的知识有限,但我完成了 android 应用程序开发的基础教程,并且我有 eclipse 插件开发经验。
非常感谢。非常感谢你的帮助。
当然可以:
- 每个布局(如 LinearLayout, RelativeLayout etc.) extends the ViewGroup-class, which offers the addView-方法。
- 要向您的其中一个布局添加新视图(如滑块),只需在您的 activity 中以编程方式(通过新建)实例化它并为其分配适当的 LayoutParams
- 要存储用户添加内容的状态,使用起来最简单SharedPreferences - 一个简单的键值存储,它在应用程序的生命周期中保存数据
是的。这个有可能。要动态创建 View
s,您只需扩展 View
的 class 或者只说 new Button(Context, AttributeSet);
(不仅对于 Button 的每个视图都有一个构造函数,它采用一个属性集和一个上下文)。
使用 Layout.addView()
您可以将任何 View
添加到 Layout
。
使用 SharedPreferences,您可以指明 View
属于 Layout
.
如果您决定延长 View's
class,请确保不要在其中做太多事情。我试过一次,它只是给了我一个 OOM
(OutOfMemory 错误),因为我有很多 View
试图同时做一些事情。