Android – 以编程方式添加视图忽略某些样式属性

前端之家收集整理的这篇文章主要介绍了Android – 以编程方式添加视图忽略某些样式属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
用户点击另一个按钮时,我以编程方式在我现有的 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中手动包含该按钮,它将成功使用所有样式.

任何帮助非常感谢.

解决方法

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

编辑添加更多详细信息

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

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

猜你在找的Android相关文章