当用户点击另一个按钮时,我以编程方式在我现有的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中手动包含该按钮,它将成功使用所有样式。
任何帮助都非常感激。
答案 0 :(得分:3)
您需要在调用addView()
时传递布局参数,因为布局参数与单个视图无关,它们始终在周围视图的上下文中进行。 addView()
的变体带有LayoutParams
参数。
编辑添加更多详情
您应该创建一组LinearLayout.LayoutParams
并在那里设置边距,然后将其传递给addView()
layout_below
会忽略 LinearLayout
(该属性仅与RelativeLayout
相关。当您致电addView(buttonDelete, 1)
时,您告诉它将视图放在哪里线性布局。