2016-07-17 57 views
0

我有這樣的滾動型:設置RelativeLayout.LayoutParams編程

<Scrollview 
    android:id="@+id/DashboardView_menuContainer" 
    android:layout_width="match_parent" 
    android:layout_alignParentBottom="true" 
    android:fillViewport="true" /> 

因爲我已經意識到我需要給它一個動態的高度,這意味着我需要爲它做的佈局編程。

這是我到目前爲止有:

_menuContainer = FindViewById <ViewGroup> (Resource.Id.DashboardView_menuContainer); 

//get height of screen 
var metrics = Resources.DisplayMetrics; 
var menuWidth = metrics.WidthPixels; 
var menuHeight = metrics.HeightPixels - 200; 

//TODO: add anchorBottom to the layoutParams 
_menuContainer.LayoutParameters = (new RelativeLayout.LayoutParams(menuWidth, menuHeight)); 

所以我只需要以編程方式添加android:layout_alignParentBottom="true"到layour PARAMS。我不確定如何添加任何東西到layoutParams除了寬度和高度。我怎麼做?

回答

0

這應該做的伎倆:

RelativeLayout.LayoutParams parameters = new RelativeLayout.LayoutParams(menuWidth, menuHeight); 
parameters.AddRule(LayoutRules.AlignParentBottom); 
_menuContainer.LayoutParameters = parameters; 
+0

其給予例外Java.Lang.ClassCastException:android.widget.RelativeLayout $的LayoutParams不能轉換到android.widget.LinearLayout $的LayoutParams – SANDEEP

+0

你得到了這個異常,因爲您正試圖將RelativeLayout參數添加到LinearLayout對象(上述代碼中的_menuContainer)。確保您嘗試應用參數的佈局是RelativeLayout,否則它將無法工作。如果您需要將其保存爲LinearLayout,請使用LinearLayout.LayoutParams參數=新的LinearLayout.LayoutParams(menuWidth,menuHeight);但是您將無法使用AddRule,因爲它是RelativeLayout特定的。 – YumeYume

+0

不,我適用於相對佈局對象我的menuContainer是相對佈局 – SANDEEP