related SO question如何讀取多種格式的自定義屬性的值?
我們可以定義多種類型的自定義屬性。
<declare-styleable name="RoundedImageView">
<attr name="cornerRadius" format="dimension|fraction"/>
</declare-styleable>
而且我想通過以下方式
<RoundedImageView app:cornerRadius="30dp"/>
<RoundedImageView app:cornerRadius="20%"/>
如何讀出它的價值使用呢?
API級21提供的API TypedArray.getType(index)
int type = a.getType(R.styleable.RoundedImageView_cornerRadius);
if (type == TYPE_DIMENSION) {
mCornerRadius = a.getDimension(R.styleable.RoundedImageView_cornerRadius, 0);
} else if (type == TYPE_FRACTION) {
mCornerRadius = a.getFraction(R.styleable.RoundedImageView_cornerRadius, 1, 1, 0);
}
我想這是推薦的解決方案。
但是如何以較低的API級別來實現呢?我必須使用try catch
嗎?
或者,也許只是定義兩個屬性... cornerRadius
和cornerRadiusPercentage
...我想在CSS中錯過border-radius
。
'TypedArray.getValue(...)'+'TypedValue.type'? – Selvin
@Selvin我正在嘗試你的解決方案。我認爲它會起作用。謝謝。 – Moon
@Selvin你可以發表一個答案。我會接受它。 – Moon