android - 如何以编程方式将 View 添加到 View

标签 android

假设我有一个 LinearLayout,我想在我的程序中通过 Java 代码向其中添加一个 View 。为此使用什么方法?我不是在问它是如何在 XML 中完成的(我确实知道这一点),而是问我如何按照此示例代码做一些事情?

(One View).add(Another View)

就像在 Swing 中可以做的那样。

最佳答案

调用 addView 是正确的答案,但您需要做更多的事情才能使其正常工作。

如果您通过构造函数创建 View (例如,Button myButton = new Button();),则需要在新构造的 View 上调用 setLayoutParams,传入父 View 的 LayoutParams 内部类的实例,然后再将新构造的 subview 添加到父 View 。

例如,假设您的 LinearLayout 具有 ID R.id.main,您的 onCreate() 函数中可能包含以下代码:

LinearLayout myLayout = findViewById(R.id.main);

Button myButton = new Button(this);
myButton.setLayoutParams(new LinearLayout.LayoutParams(
                                     LinearLayout.LayoutParams.MATCH_PARENT,
                                     LinearLayout.LayoutParams.MATCH_PARENT));

myLayout.addView(myButton);

确保设置 LayoutParams 很重要。每个 View 至少需要一个layout_width和一个layout_height参数。获得正确的内部类也很重要。我一直在努力将 View 添加到 TableRow 中以正确显示,直到我发现我没有将 TableRow.LayoutParams 的实例传递给 subview 的 setLayoutParams。

关于android - 如何以编程方式将 View 添加到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55029817/

相关文章:

java - Android 高效地从 Drawable 加载图像

android - Android 7.x 上的 Samsung Galaxy 设备出现大量 OutOfMemoryError

java - 标签内的谷歌地图 fragment

android - 无法找到方法 'com.android.tools.r8.Version.getVersionString()Ljava/lang/String;'

android - 如何通知一个Activity另一个Activity刚刚启动?

android - 我如何设计一个移动应用程序来跟踪其他应用程序

java - Android - SQLite 向数据库添加更多表时出现问题

java - Android,将数据推送到一组订阅线程的最佳方式?

android - jack and jill for android 兼容字节码编织吗?

java - 从 HttpResponse 获取 json