在Android中以编程方式添加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); 

Solutions Collecting From Web of "在Android中以编程方式添加LinearLayout不起作用"

 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,所以我们确切地知道你想要什么。