Я, имеющий настраиваемое представление, которое будет принимать набор атрибутов (значение XML) в качестве значения конструкторазначения Alter AttributeSet в андроида
public CustomView(Context context) // No Attributes in this one.
{
super(context);
this(context, null, 0);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
this(context, attrs, 0)
}
public CustomView(Context context, AttributeSet attrs, int default_style) {
super(context, attrs, default_style);
readAttrs(context, attrs, defStyle);
init();
}
В классе Fragment я ставлю точку зрения, как
CustomView customView = (CustomView) view.findViewById(R.id.customView);
где пользовательские view содержит различное значение, такое как высота, ширина, заполнение и т. д.
Я хочу изменить эти значения на основе требуемого условия и вернуть его к пользовательскому виду. Я установил код высоты ширины установки в onDraw и назвал вид invalidte. Но выше метод будет устанавливать каждый раз, если я вызвал недействительным метод в классе CustomView. как преодолеть это, чтобы я мог передавать измененное значение набора атрибутов только в конструкторе.?
Редактировать: Мне нужно изменить значения представления (инициализировать новыми значениями), которые устанавливаются во время создания атрибута, чтобы я получил обновленное представление с новыми значениями. Override @OnDraw или 'Invalidate' не является хорошей функцией для меня, где внутри invalidate я написал методы, которые будут выполняться в каждом втором интервале.
Попробуйте установить 'LayoutParams' для вас' CustomView'. таким образом вы можете изменить свои значения на основе требуемого условия. – astuter
@astuter Значения CustomView - это не только ширина, высота и т. Д. Значения, которые определяются во взгляде, такие как цвет, showText, ShowColor, ShowGraph. и т.д. –