2016-03-14 72 views
0

我有尺寸的按鈕:的Android layaout PARAMS

btn1.width = 100; 
btn2.height = 150; 

我用下面的代碼調整:

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) btn1.getLayoutParams(); 
layoutParams.width = 200; 
layoutParams.height = 300; 
btn1.setLayoutParams(layoutParams); 

當我這樣做:

int newSize = btn1.getWidth; 

的新尺寸有值爲100,但不是200.它很好地調整了按鈕的大小,但在調整大小後,btn1.getWidth仍然保持以前的值。我怎樣才能立即獲得設定的大小?

+0

你有沒有嘗試打印日誌的東西,檢查是否這些行被執行? – guisantogui

+0

您在代碼中添加此行的位置? –

+0

將其添加到WindowsFocuschange上。 – user3240604

回答

0

View的實際寬度不會立即更新。

最好的辦法是在設置時緩存大小。

+0

沒有辦法立即更新?這是我的問題,是不立即更新寬度 – user3240604

+0

@ user3240604不是真的;這是Android設計來處理視圖更新的方式。 – manabreak

0

設置爲視圖後,您不會直接獲取高度/寬度。如果你想,那麼你可以得到「後」的方法:

btn1.setWidth(200); 
btn1.setHeight(300) 
btn1.post(new Runnable() { 
     @Override 
     public void run() { 
       Log.i("Tag", "Width:"+ btn1.getWidth() + " Height:" + btn1.getHeight()); 
     } 
}); 
+0

什麼是post方法? – user3240604

+0

按鈕調整大小後,將立即調用Post方法。 http://developer.android.com/reference/android/view/View.html#post(java.lang.Runnable) –