Поздний ответ, хотя и с подробным описанием, для других.
Набор атрибутов (Документы для Android)
Коллекция атрибутов, обнаруженных в теге XML-документа.
Обычно, если вы пытаетесь создать пользовательский вид и хотите передавать значения, такие как размеры, цвета и т. Д., Вы можете сделать это с помощью AttributeSet
.
Вот пример
Представьте, что вы хотите создать View
, как показано ниже
Прямоугольник с желтым фоном и круг внутри него, скажем, с радиусом 5dp, и зеленый фон. Если вы хотите, чтобы ваши представления принимали значения цветов фона и радиуса через XML, например:
<com.anjithsasindran.RectangleView
app:radiusDimen="5dp"
app:rectangleBackground="@color/yellow"
app:circleBackground="@color/green" />
Ну вот где используется AttributeSet
. Вы можете иметь этот файл attrs.xml
в папке значений со следующими свойствами.
<declare-styleable name="RectangleViewAttrs">
<attr name="rectangle_background" format="color" />
<attr name="circle_background" format="color" />
<attr name="radius_dimen" format="dimension" />
</declare-styleable>
Поскольку это View, класс java расширяется от View
public class RectangleView extends View {
public RectangleView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray attributes = context.obtainStyledAttributes(attrs, R.styleable.RectangleViewAttrs);
mRadiusHeight = attributes.getDimensionPixelSize(R.styleable.RectangleViewAttrs_radius_dimen, getDimensionInPixel(50));
mCircleBackgroundColor = attributes.getDimensionPixelSize(R.styleable.RectangleViewAttrs_circle_background, getDimensionInPixel(20));
mRectangleBackgroundColor = attributes.getColor(R.styleable.RectangleViewAttrs_rectangle_background, Color.BLACK);
attributes.recycle()
}
}
Так что теперь мы можем использовать эти свойства для нашего RectangleView
в вашем макете xml, и мы получим эти значения в конструкторе RectangleView
.
app:radius_dimen
app:circle_background
app:rectangle_background