10331


`orientation=vertical`のLinearLayoutに`orientation=horizontal`のLinearLayoutを動的に2つ作成し、挿入する方法で2×2のLayoutを作成したいのですが、0番目と2番目のFlameLayoutが画面幅を専有してしまって、1番目と3番目のFlameLayoutが表示されません。  
以下のコードが私の考えたアルゴリズムです。

[code]

    private void setView(List<item> items){
      int viewCount=0;
      LinearLayout horizontalHolder = getHorizontalHolder();
      while(viewCount!=items.size()){
        if(viewCount==2){
          mVerticalHolder.addView(horizontalHolder);
          horizontalHolder = getHorizontalHolder();
        }
        FrameLayout itemView = (FrameLayout)mInflater.inflate(R.layout.item_layout, horizontalHolder, false);
    
        /*Viewセット*/
    
        horizontalHolder.addView(item_view);
        viewCount++;
      }
    }
    
    private LinearLayout getHorizontalHolder(){
      LinearLayout horizontalholder = new LinearLayout(this);
      horizontalHolder.setOrientation(LinearLayout.HORIZONTAL);
      return horizontalHolder;
    }
    
[/code]

アルゴリズムを色々変えたのですが、結局解決策を発見できませんでした。  
もし、このコードを見てどこを修正すればいいかがわかれば教えていただければありがたいです。よろしくおねがいします。


CC BY-SA 3.0
2015-05-17T10:50:24.717
10288
2015-05-19T14:06:33.190
7232
question
android android-layout
LinearLayoutに2×2のFrameLayoutを並べたい。


LinearLayout ll = new LinearLayout(this);  
LinearLayout.LayoutParams lp = LinearLayout.LayoutParams(width, height,
weight);  
ll.setLayoutParams(lp);

等として、LinearLayout、FrameLayout共にレイアウトの幅や高さを指定してやる必要があると思います。inflateするFrameLayoutに背景色などをセットしてテストすると分かりやすいのではないでしょうか。


CC BY-SA 3.0
2015-05-18T15:27:52.220
10331
2015-05-19T14:06:33.190
2015-05-19T14:06:33.190
8795
8795
10288
answer