Получение значения атрибута из объекта просмотра - PullRequest
0 голосов
/ 03 января 2019

У меня есть пользовательский объект View, и у меня есть доступ только к View.Итак, у меня есть атрибут с именем attribute1, и я установил его для своего просмотра, используя app:attribute1="value". Как я могу извлечь значение attribute только из моего View объекта, возможно ли это?какие подходы я могу принять для этого?Я искал почти везде и не мог найти ничего об этом.

Пример:

CustomView customView = new CustomView();

Я хотел бы получить значение атрибута из customView

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Атрибуты XML доступны внутри AttributeSet объектов, которые доступны только внутри конструкторов View.

Поэтому, если вы не можете изменить источник пользовательского класса View, вы не сможетевыполнить то, что вы хотите сделать.

Если вы можете изменить источник класса, то вы можете сохранить ссылку на значение атрибута внутри конструктора и предоставить метод получениядля этого.Например:

private int strokeColor;

public MyCustomView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    ...

    TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyCustomView, 0, 0);
    this.strokeColor = a.getColor(R.styleable.MyCustomView_strokeColor, defaultColor);
    ...
    a.recycle();
}

public int getStrokeColor() {
    return strokeColor;
}
0 голосов
/ 03 января 2019

Вот официальная документация, как это сделать, именно то, что вы хотите. Все, что вам нужно, это declare-styleable, где вы можете создать свой собственный атрибут для просмотра. Затем изнутри, в конструкторе вы получаете значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...