首页 文章

在Android中以编程方式添加LinearLayout不起作用

提问于
浏览
23

层次结构如下:

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

1 回答

  • 61
    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,以便我们确切地知道您想要什么 .

相关问题