2017-08-02 1 views
1

Je l'ai fait par le passé et je suis frustré parce que cette méthode ne fonctionne pas comme je le souhaite. J'ai une image que je veux redimensionner à des dimensions spécifiques et je suis en utilisant le code ci-dessous:Pourquoi setLayoutParams ne modifie-t-il pas la taille de mon ImageView?

snellen.post(new Runnable() { 
     @Override 
     public void run() { 
      ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams) snellen.getLayoutParams(); 
      params.width = (int)(converted*WIDTH_RATIO); 
      params.height = (int)(converted*HEIGHT_RATIO); 

      snellen.setLayoutParams(params); 

      System.out.println("########################################################################### SNELLEN CHART WIDTH: : " + snellen.getWidth()); 
      System.out.println("########################################################################### SNELLEN CHART HEIGHT: : " + snellen.getHeight()); 
     } 
    }); 

J'ai vérifié ce que les deux (converted*WIDTH_RATIO) et (converted*HEIGHT_RATIO) sont et ils sont quelque part dans les 100. Je l'ai mis à l'intérieur d'un handler afin que je puisse obtenir le bon getLayoutParams() parce que j'ai eu des problèmes avec cela dans le passé.

Le problème est que lorsque j'imprime quelle est la largeur et les hauteurs sont ils ne sont pas ce que je les ai mis à l'intérieur de la params.width et params.height. Qu'est-ce que je fais mal ici?

+0

On dirait que ça devrait marcher, n'est-ce pas? Jetez un oeil à [cette réponse] (https://stackoverflow.com/a/40028802/6287910) pour une autre façon d'aborder cela. – Cheticamp

+1

Puisque le parent 'snellen' semble être' ConstraintLayout', est-il possible que les contraintes soient si spécifiques qu'elles ne vous permettent pas de contrôler la taille de la vue? –

+0

@BenP. Tu avais raison. J'ai dû mettre mon image juste pour être contrainte d'un côté de l'écran au lieu d'être contrainte de tous les côtés en utilisant mes lignes directrices que j'ai créées. Ensuite, il était capable de redimensionner l'image. Juste wow, je ne m'attendais jamais à ce que ce soit un problème. N'hésitez pas à poster votre commentaire comme réponse – cjnash

Répondre

1

Puisque vous il est probable que votre point de vue casting snellen « s LayoutParams-ConstraintLayout.LayoutParams, est l'enfant d'un ConstraintLayout. Si tel est le cas, il est possible que le problème soit que les dimensions de votre vue soient définies par l'ensemble de ses contraintes, et que la modification des paramètres params.width et params.height n'aura aucun effet.

Vérifiez les contraintes de votre vue et assurez-vous qu'elles ne déterminent pas les dimensions de la vue.

0

Essayez d'utiliser snellen.requestLayout() j'espère que vous aider

+0

où? au-dessus de mon .post ou au-dessus de mon appel à getLayoutParams? – cjnash

+0

après snellen.setLayoutParams (params); mais ce que j'ai vérifié que les valeurs que vous essayez d'attribuer n'est pas affecté à Imageview –

+0

Ouais juste essayé de l'ajouter et il n'a pas l'air de faire quoi que ce soit. Merci de toute façon – cjnash