5

当用户点击另一个按钮时,我正在以编程方式将一个按钮添加到我现有的 Android 视图中。它在功能方面起作用,但某些样式信息似乎被忽略了。

我通过使用仅包含按钮的单独布局来添加按钮,并预先填充样式值。

<Button xmlns:android="http://schemas.android.com/apk/res/android" style="@style/FileStorageDeleteButton"></Button>

通过使用getLayoutInflater,我可以将此按钮添加到布局中。

buttonDelete = (Button) getLayoutInflater().inflate(R.layout.pete_button_filedelete, null);

LinearLayout layout = (LinearLayout)findViewById(R.id.layoutFileStorage);

layout.addView(buttonDelete, 1);

我在 values 目录中有一个 XML 文件,它为 设置颜色、文本等@style/FileStorageDeleteButton,其中大部分在添加时被按钮使用。但是由于某种原因,四个边距属性layout_below被忽略了。

当此按钮出现时,我在 LogCat 中没有收到任何错误,就好像样式根本没有被应用。如果我在该布局的 XML 中手动包含按钮,它会成功使用所有样式。

非常感谢任何帮助。

4

1 回答 1

3

您需要在调用时传递布局参数,addView()因为布局参数与单个视图无关,它们总是在周围视图的上下文中获取。有一些变体addView()需要LayoutParams争论。

编辑添加更多细节

您应该创建一组LinearLayout.LayoutParams并在其中设置边距,然后将其传递给addView()

layout_below无论如何都会被忽略LinearLayout(该属性仅与 a 相关RelativeLayout。当您调用时,addView(buttonDelete, 1)您会告诉它在线性布局中放置视图的位置。

于 2013-03-22T14:58:55.547 回答