studio programacion herramientas fundamentos con avanzado aplicaciones android android-layout android-linearlayout

programacion - manual de android en pdf



Agregar LinearLayout programáticamente en Android no funciona (1)

La jerarquía es así:

  • Disposición relativa
    • LinearLayout (vertical)
      • FrameLayout (peso 5)
        • ImageView
      • Ver (peso 1)

La vista es solo una vista ficticia para el propósito de espaciado. Lo hice en el diseño xml y funciona. Pero cuando quiero hacerlo programáticamente, los siguientes códigos no funcionan.

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


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

Acabo de organizar tu código para una mejor comprensión, también le di un color de fondo para obtener una imagen clara ya que no sé lo que quieres, puedes pasar por él. Espero que sea útil. Debe proporcionar su xml de trabajo para que sepamos exactamente lo que desea.