2014-04-15 104 views
1

如何以編程方式設置GestureOverlayView's寬度和高度?以編程方式設置GestureOverlayView的寬度和高度?

我試過下面的代碼。但是在設置寬度和高度時出現空指針異常。

GestureOverlayView gestureOverlayView = new GestureOverlayView(this); 
    View inflate = getLayoutInflater().inflate(R.layout.main, null); 
    ImageView imageView = (ImageView) inflate.findViewById(R.id.imageView); 
    gestureOverlayView.addView(inflate); 
    gestureOverlayView.getLayoutParams().height = 50; 
    gestureOverlayView.getLayoutParams().width = 50; 
    setContentView(gestureOverlayView); 

回答

1

您需要先添加視圖,然後才能讀出高度和寬度。此外,您只有在第二次或第三次致電onMeasure(...)後纔會遇到問題,尺寸爲最終尺寸。

如果要通過代碼使用此功能來設置寬度和高度:

ViewGroup.LayoutParams lp = gestureOverlayView.getLayoutParams(); 
if(lp == null) { 
    // not yet added to parent 
    lp = new ViewGroup.LayoutParams(desiredWidth, desiredHeight); 
} else { 
    lp.width = desiredWidth; 
    lp.height = desiredHeight; 
} 
gestureOverlayView.setLayoutParams(lp); 

yourparent.addView(gestureOverlayView, lp); 

請注意,您也需要選擇合適的LayoutParams實施。在這裏,我使用ViewGroup中的一個。

+0

感謝您的回覆。你提到「你需要首先添加視圖才能讀出高度和寬度」是正確的。我只是改變我的代碼如下。這個對我有用。 setContentView(gestureOverlayView); gestureOverlayView.getLayoutParams()。height = 50; gestureOverlayView.getLayoutParams()。width = 50; – SKK

+0

歡迎您:) – rekire

相關問題