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
... Я пропущу border-radius
в CSS.
'TypedArray.getValue (...)' + 'TypedValue.type'? – Selvin
@Selvin Я пытаюсь ваше решение. Я думаю, это сработает. Благодарю. – Moon
@Selvin Вы можете отправить ответ. Я соглашусь. – Moon