gpt4 book ai didi

android - Anko 忽略样式中定义的 layout_margin

转载 作者:行者123 更新时间:2023-11-29 15:39:31 24 4
gpt4 key购买 nike

我创建了一个自定义样式:

<style name="Static">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginEnd">5dp</item>
</style>

然后我用静态函数扩展了anko:

inline fun ViewManager.static(theme: Int = R.style.Static, init: TextView.() -> Unit) = ankoView(::TextView, theme, init)

当我在布局中使用它时:

static { text = resources.getString(R.string.name) }

marginEnd 值被忽略。

如果我在 anko 中手动添加边距:

static { text = resources.getString(R.string.name) }.lparams { marginEnd = dip(5) }

边距很好。

你们知道 anko 忽略了我的边距值或任何其他方式来为扩展 View anko 函数定义预定义边距吗?

最佳答案

这不是 Anko 问题,Android 是这样工作的:

If you are specifying layout_margin in a custom style, this style must be explicitly applied to each individual view that you wish to have the specified margin (as seen in the code sample below). Including this style in a theme and applying it to your application or an activity will not work.

这是因为以 layout_ 开头的属性是 LayoutParams,或者在本例中是 MarginLayoutParams。每个 ViewGroup 都有自己的 LayoutParams 实现。因此 layout_margin 不仅仅是可以在任何地方应用的一般属性。它必须在明确将其定义为有效参数的 ViewGroup 上下文中应用。

here了解更多。

关于android - Anko 忽略样式中定义的 layout_margin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43404324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com