Android-以编程方式添加视图会忽略一些样式属性

Android-以编程方式添加视图会忽略一些样式属性,android,android-layout,android-view,Android,Android Layout,Android View,当用户点击另一个按钮时,我通过编程方式将一个按钮添加到现有的Android视图中。它在功能方面起作用,但是一些样式信息似乎被忽略了 我通过一个单独的布局添加按钮,其中只包含按钮,并且预先填充了样式值 通过使用getLayoutInflater,我可以将此按钮添加到布局中 buttonDelete=(Button)getLayoutFlater().充气(R.layout.pete\u Button\u filedelete,null) LinearLayout布局=(LinearLayout)

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

我通过一个单独的布局添加按钮,其中只包含按钮,并且预先填充了样式值

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

buttonDelete=(Button)getLayoutFlater().充气(R.layout.pete\u Button\u filedelete,null)

LinearLayout布局=(LinearLayout)findViewById(R.id.layoutFileStorage)

layout.addView(按钮删除,1)

我在values目录中有一个XML文件,它为
@style/FileStorageDeleteButton
设置颜色、文本等,按钮添加时会使用其中大部分内容。但由于某些原因,下面的四个边距属性和布局被忽略

当这个按钮出现时,我在LogCat中没有得到任何错误,就好像没有应用样式一样。如果在该布局的XML中手动包含该按钮,它将成功地使用所有样式


非常感谢您的帮助。

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

编辑添加更多详细信息

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


对于
线性布局
无论如何都会忽略下面的
布局(该属性仅与
相对布局
相关)。当您调用
添加视图时(按钮删除,1)
您正在告诉它在线性布局中放置视图的位置。

谢谢David-您的帖子让我找到了正确的方向,发现我可以将更多变量传递到充气中。现在使用
buttonDelete=(Button)GetLayoutFlater()。充气(R.layout.pete_Button_文件删除,布局,false);
,虽然下面的
布局仍然被忽略。我可以绕过这个问题,但只是想知道为什么这个仍然不起作用?再次感谢!如果我有声望投票给你,我会:)
下面的
布局只用于
相对性
。您的
LinearLayout
忽略此属性。在
线性布局中
可以使用视图在布局中的位置来控制上方/下方。