Android:以编程方式设置 ImageView 样式



我有一个 ImageView,我需要以编程方式将样式应用于此图像,而不是在 xml 中执行此操作

<style name="mainicon">
<item name="android:background">@drawable/icon_background</item>
<item name="android:foregroundTint">@drawable/foreground_selector</item>
...
</style>

val buttonImageView = view.findViewById<ImageView>(R.id.main_button) as ImageView

我的问题是,如何以编程方式将样式应用于此图像视图?

您无法更改创建和附加View样式。 style只能设置在构造函数中,所以如果你使用XML声明,那么style已经在那里应用了(通过style属性,不带android:前缀(

您可以删除当前View并在同一位置添加新的构造器应用的新样式

new ImageView(context, null, R.style.mainicon);

或使用ContextThemeWrapper

new ImageView(new ContextThemeWrapper(context, R.style.mainicon));

作为一个选项,您还可以在XML中定义两个具有不同样式的ImageView并切换其Visibility。 这不是性能的最佳解决方案,因为您将在内存中保留额外的未使用View,但Visiblity.GONE它不会被绘制,因此不会占用太多内存,并且切换可见性可能比删除/添加新View更容易

相关内容

  • 没有找到相关文章

最新更新