2017-08-02 113 views
1

我已經完成了這個過去,我很沮喪,因爲這種方法不像我期望的那樣工作。我有我想要調整到特定尺寸的圖像,我用下面的代碼:爲什麼不是setLayoutParams更改我的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()); 
     } 
    }); 

我也查了一下這兩個(converted*WIDTH_RATIO)(converted*HEIGHT_RATIO)是,他們是在某處100的。我已經把它放在一個處理程序中,所以我可以得到正確的getLayoutParams(),因爲我過去遇到過這個問題。

問題是,當我打印出寬度和高度是什麼時,他們不是我已經將它們設置在params.widthparams.height內部。我在這裏做錯了什麼?

+0

看起來它應該工作,不是嗎?看看[這個答案](https://stackoverflow.com/a/40028802/6287910)另一種方法來解決這個問題。 – Cheticamp

+1

因爲'snellen'的父項看起來像是'ConstraintLayout',有沒有可能這些約束是如此特殊,他們不允許你控制視圖的大小? –

+0

@BenP。你是對的。我必須將我的形象設置爲僅限於屏幕的一側,而不是使用我創建的指南來約束各個方面。然後它能夠​​調整圖像大小。只是哇,我從未想過會成爲一個問題。隨時發表您的評論作爲回答 – cjnash

回答

1

既然你鑄造snellenLayoutParamsConstraintLayout.LayoutParams,它很可能是你的看法是ConstraintLayout的孩子。

如果是這種情況,問題可能是您的視圖的尺寸是由其一組約束定義的,所以更改params.widthparams.height將不起作用。

檢查您的視圖的約束,並確保它們不確定視圖的尺寸。

0

嘗試使用snellen.requestLayout()我希望能夠幫助您

+0

在哪裏?在我的.post上方或上方調用getLayoutParams?在snellen.setLayoutParams(params)之後的 – cjnash

+0

; 但我檢查你試圖分配的值沒有分配給Imageview –

+0

是的,只是試圖添加它,它似乎沒有做任何事情。謝謝 – cjnash

相關問題