2017-08-02 19 views
1

私は過去にこれをしていましたが、私は期待したようにこの方法が機能していないので、私は欲求不満です。私は特定の寸法にリサイズする画像を持っていると私は以下のコードを使用しています:私は両方(converted*WIDTH_RATIO)(converted*HEIGHT_RATIO)が何であるかをチェックして、彼らはどこかに100の中にあるImageViewのサイズをsetLayoutParamsで変更できないのはなぜですか?

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()); 
     } 
    }); 

。私はそれをハンドラの中に入れました。私は過去に問題があったので、正しいgetLayoutParams()を得ることができます。

問題は、幅と高さが何であるかを印刷するときに、params.widthparams.heightの内側に設定したものではないことです。私はここで間違って何をしていますか?

+0

動作するはずですか?これにアプローチする別の方法は、[この回答](https://stackoverflow.com/a/40028802/6287910)をご覧ください。 – Cheticamp

+1

'snellen'の親は' ConstraintLayout'のように見えますが、制約が非常に特殊でビューのサイズを制御できない可能性はありますか? –

+0

@BenP。あなたは正しかった。私は私が作成したガイドラインを使用して、すべての面で制約を受けるのではなく、画面の片面に制限するようにイメージを設定する必要がありました。その後、画像のサイズを変更することができました。ちょうどうわー、私はそれが問題であるとは決して考えなかった。あなたのコメントを回答として投稿してください。 – cjnash

答えて

1

助けていること、私は願っていますsnellen.requestLayout()を使用してみてくださいあなたはConstraintLayout.LayoutParamsからsnellenLayoutParamsをキャストしているので、あなたのビューがConstraintLayoutの子である可能性が高いようです。

この場合、ビューのサイズが制約のセットによって定義されているという問題があり、したがってparams.widthparams.heightを変更しても効果はありません。

ビューの制約を確認し、ビューのサイズを決定していないことを確認します。

0

あなたは

+0

どこですか? .post以上のgetLayoutParamsへの呼び出しの上に? snellen.setLayoutParams(params)の後に – cjnash

+0

; あなたが割り当てようとした値がImageviewに割り当てられていないことを確認しました –

+0

ええ、それを追加しようとしましたが、何もしていないようです。とにかくありがとうございます – cjnash

関連する問題