Android-以编程方式添加视图会忽略一些样式属性
当用户点击另一个按钮时,我通过编程方式将一个按钮添加到现有的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)
通过使用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
忽略此属性。在线性布局中
可以使用视图在布局中的位置来控制上方/下方。