我有一个自定义视图,我需要从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>
我在哪里得到这个attr:
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)
,但结果相同......
答案 0 :(得分:3)
请尝试以下方法:
SELECT COUNT(*)
FROM Invoice AS I
JOIN Sign S1
ON I.sign = S1.sign_code
JOIN ( SELECT T.invoice_year, T.invoice_number
, SUM(T.amount*S2.sign_value) as sm
FROM Taking T
JOIN Sign S2
GROUP BY T.invoice_year, T.invoice_number
) t
ON T.invoice_year = I.invoice_year
AND T.invoice_number = I.invoice_number
AND I.amount*S1.sign_value <> t.sm