0

我創建了很多自定義視圖,我試圖將它們添加到我的片段中。他們得到補充,但我似乎無法讓他們去我想要的地方。應該有2列和3行,但最終爲1列,所有自定義視圖堆疊在一起。這裏是我的代碼添加視圖和設置佈局PARAMS的片段佈局:以編程方式添加視圖不起作用

RelativeLayout fm = (RelativeLayout) view.findViewById(R.id.fragmentLayout); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 

    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
    CustomImages cs = new CustomImages(getActivity()); 
    cs.setId(R.id.one); 
    cs.setLayoutParams(params); 

    params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); 
    params.addRule(RelativeLayout.RIGHT_OF, cs.getId()); 
    CustomImages2 cs2 = new CustomImages2(getActivity()); 
    cs2.setId(R.id.two); 
    cs2.setLayoutParams(params); 

    RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params2.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
    params2.addRule(RelativeLayout.BELOW, cs2.getId()); 
    CustomImages3 cs3 = new CustomImages3(getActivity()); 
    cs3.setId(R.id.three); 
    cs3.setLayoutParams(params); 

    RelativeLayout.LayoutParams params3 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params3.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); 
    params3.addRule(RelativeLayout.RIGHT_OF, cs3.getId()); 
    CustomImages4 cs4 = new CustomImages4(getActivity()); 
    cs4.setId(R.id.four); 
    cs4.setLayoutParams(params); 

    RelativeLayout.LayoutParams params4 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params4.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
    params4.addRule(RelativeLayout.BELOW, cs4.getId()); 
    CustomImages5 cs5 = new CustomImages5(getActivity()); 
    cs5.setId(R.id.five); 
    cs5.setLayoutParams(params); 

回答

2
cs3.setLayoutParams(params); 
cs4.setLayoutParams(params); 
cs5.setLayoutParams(params); 

我相信params應該與params2,分別爲params3params4所取代。

UPDATE:
此外,你應該指定LAYOUT_BELOW是在不上頭,並正確地做這一切的觀點:

params2.addRule(RelativeLayout.BELOW, cs.getId()); // not cs2 
params3.addRule(RelativeLayout.BELOW, cs2.getId()); // add this 
params4.addRule(RelativeLayout.BELOW, cs3.getId()); // not cs4 
+0

我已經試過了,它具有完全相同的行爲。 – 2014-09-10 20:56:51

+0

@MaxKleine這並不意味着你不應該這樣做。同時檢查我的更新回答 – 2014-09-10 21:08:26

+0

是的,修復。謝謝。 – 2014-09-11 09:03:32

相關問題