2013-09-28 12 views
22

機能しない階層は次のようである:アンドロイドでプログラムのLinearLayoutを追加する

  • RelativeLayout
    • のLinearLayout(垂直)
      • でframeLayout(重量5)
        • ImageViewの
      • ビュー(重量1)

ビューは、目的の間隔のためだけのダミーの図です。 レイアウトxmlでやってしまいました。 しかし、プログラムでそれをやりたければ、次のコードは機能しません。

LinearLayout LL = new LinearLayout(this); 
ImageView ladder = new ImageView(this); 
FrameLayout ladderFL = new FrameLayout(this); 
View dummyView = new View(this); 
ladder.setImageResource(R.drawable.ladder1); 
LL.setOrientation(LinearLayout.VERTICAL); 
LayoutParams LLParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT); 
LinearLayout.LayoutParams ladderFLParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 0); 
ladderFLParams.weight = 5f; 
LinearLayout.LayoutParams dummyParams = new LinearLayout.LayoutParams(0,0); 
dummyParams.weight = 1f; 

FrameLayout.LayoutParams ladderParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM); 
ladder.setLayoutParams(ladderParams); 
ladderFL.setLayoutParams(ladderFLParams); 
dummyView.setLayoutParams(dummyParams); 
LL.setWeightSum(6f); 
LL.setLayoutParams(LLParams); 

ladderFL.addView(ladder); 
LL.addView(ladderFL); 
LL.addView(dummyView); 
((RelativeLayout) findViewById(R.id.screenRL)).addView(LL); 

答えて

58
LinearLayout LL = new LinearLayout(this); 
    LL.setBackgroundColor(Color.CYAN); 
    LL.setOrientation(LinearLayout.VERTICAL); 

    LayoutParams LLParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT); 

    LL.setWeightSum(6f); 
    LL.setLayoutParams(LLParams); 


    ImageView ladder = new ImageView(this); 
    ladder.setImageResource(R.drawable.ic_launcher); 

    FrameLayout.LayoutParams ladderParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM); 
    ladder.setLayoutParams(ladderParams); 

    FrameLayout ladderFL = new FrameLayout(this); 
    LinearLayout.LayoutParams ladderFLParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 0); 
    ladderFLParams.weight = 5f; 
    ladderFL.setLayoutParams(ladderFLParams);  
    ladderFL.setBackgroundColor(Color.GREEN); 
    View dummyView = new View(this); 

    LinearLayout.LayoutParams dummyParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,0); 
    dummyParams.weight = 1f; 
    dummyView.setLayoutParams(dummyParams); 
    dummyView.setBackgroundColor(Color.RED); 



    ladderFL.addView(ladder); 
    LL.addView(ladderFL); 
    LL.addView(dummyView); 
    RelativeLayout rl=((RelativeLayout) findViewById(R.id.screenRL)); 
    rl.addView(LL); 

私はちょうどよりよく理解するためにコードを配置している、また、それを私はあなたが欲しいものを知ってはいけないと、あなたはそれを介して行くことができる鮮明な画像を得るために背景色を与えました。私はそれが有用であることを願っています。あなたはあなたが望むものを正確に知るために働くxmlを提供する必要があります。

+0

私はそれらの色を削除してもあなたのコードがなぜ機能するのか分かりません。 私のコードの配置に問題があるかもしれません。とにかく、感謝! – Tommy

+1

@Piyush Gupta:screenRLは何を表していますか? –

関連する問題