gpt4 book ai didi

android - 从 stylable 读取 sp

转载 作者:行者123 更新时间:2023-11-29 16:41:47 24 4
gpt4 key购买 nike

我有一个自定义 View ,我需要从 xml(可设置样式)传递一个 sp 值。我尝试了什么:

styleable.xml:

<declare-styleable name="TagView">
<attr name="tagText" format="string"/>
<attr name="tagTextSize" format="dimension"/>
<attr name="tagTextColor" format="color" />
</declare-styleable>

我在哪里得到这个属性:

private fun setAttrs(context: Context?, attrs: AttributeSet?) {

val typedArray = context?.obtainStyledAttributes(attrs, R.styleable.TagView, 0, 0)

if(typedArray!=null) {
val tagText = typedArray.getString(R.styleable.TagView_tagText)
val tagSize = typedArray.getDimensionPixelSize(R.styleable.TagView_tagTextSize, 0)
val tagTextColor = typedArray.getColor(R.styleable.TagView_tagTextColor, Color.WHITE)

if(tagText != null) {
nameTextView?.text = tagText
}

if(tagSize != 0 ) {
nameTextView?.textSize = tagSize.toFloat()
}

nameTextView?.setTextColor(tagTextColor)
}
typedArray?.recycle()
}

但它不会提高 sp 值(与密度相关)...例如:如果我设置 15sp,它就不会是 15sp,而是一个非常大的尺寸和一个与密度无关的尺寸。

我尝试了 typedArray.getDimension(R.styleable.TagView_tagTextSize, 0f) 但结果相同...

最佳答案

请尝试以下操作:

tagSize = a.getDimensionPixelSize(R.styleable.TagView_tagTextSize, 0);

if (tagSize > 0) {
nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, tagSize );
}

Reference

关于android - 从 stylable 读取 sp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50374237/

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