J'ai vue personnalisée qui prendra ensemble (la valeur xml) attribut comme valeur constructeurvaleurs Alter AttributeSet dans Android
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();
}
En classe Fragment je suis en train de la vue comme
CustomView customView = (CustomView) view.findViewById(R.id.customView);
où la coutume La vue contient diverses valeurs telles que la hauteur, la largeur, le remplissage, etc.
Je souhaite modifier ces valeurs en fonction des conditions requises et les rétablir en vue personnalisée. J'ai placé le code de hauteur de réglage dans la méthode onDraw et j'ai appelé la vue invalide. Mais la méthode ci-dessus va définir chaque fois si j'ai appelé invalider la méthode dans la classe CustomView. comment surmonter cela afin que je puisse transmettre la valeur de jeu d'attributs modifié dans le constructeur seulement.
Édition: J'ai besoin de modifier les valeurs de vue (initialiser avec de nouvelles valeurs) qui sont définies pendant le constructeur d'attribut afin que j'obtienne une vue actualisée avec de nouvelles valeurs. Remplacer @OnDraw ou 'Invalider' n'est pas une bonne fonction pour moi où invalide j'ai écrit les méthodes qui seront exécutées dans chaque intervalle de secondes.
Au lieu de cela, essayez de configurer 'LayoutParams' pour vous' CustomView'. De cette façon, vous pouvez modifier ses valeurs en fonction de la condition requise. – astuter
@astuter Les valeurs de CustomView ne sont pas seulement la largeur, la hauteur, etc. Les valeurs qui sont définies dans la vue telles que color, showText, ShowColor, ShowGraph. etc. –