2013-09-28 13 views
22

La gerarchia è così:Aggiunta LinearLayout programmazione in Android non funziona

  • RelativeLayout
    • LinearLayout (verticale)
      • FrameLayout (peso 5)
        • ImageView
      • Visualizza (peso 1)

la vista è semplicemente una vista fittizia per distanziare scopo. L'ho fatto nel layout xml e funziona. Ma quando voglio farlo a livello di codice, i seguenti codici non funzionano.

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); 

risposta

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); 

Ho appena organizzato il codice per una migliore comprensione, ha anche dato un colore di sfondo per ottenere l'immagine chiara come io non sa cosa si vuole, si può passare attraverso di essa. Spero sia utile. Dovresti fornire il tuo XML funzionante in modo da sapere esattamente cosa vuoi.

+0

Non so perché i tuoi codici funzionano anche se ho cancellato quei colori. Forse c'è un problema con la mia disposizione dei codici. Comunque, grazie! – Tommy

+1

@Piyush Gupta: cosa rappresenta screenRL? –

Problemi correlati