在 Android 中以编程方式添加 LinearLayout 不起作用 [英] Adding LinearLayout programmatically in Android doesn't work

查看:33
本文介绍了在 Android 中以编程方式添加 LinearLayout 不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

层次结构是这样的:

  • 相对布局
    • 线性布局(垂直)
      • FrameLayout(权重 5)
        • 图像视图

        视图只是用于间距目的的虚拟视图.我在布局 xml 中做了它并且它有效.但是当我想以编程方式进行时,以下代码不起作用.

        The View is just a dummy view for spacing purpose. I did it in the layout xml and it works. But when I want to do it programmatically, the following codes do not work.

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

        为了更好的理解,我刚刚整理了你的代码,还给了它一个背景颜色以获得清晰的图片,因为我不知道你想要什么,你可以通过它.我希望它有帮助.您应该提供您的工作 xml,以便我们确切地知道您想要什么.

        I have just arranged your code for better understanding, also gave it a background color to get the clear picture as I dont know what you want, you can go through it. I Hope it is helpful. You should provide your working xml so we know exactly what you want.

        这篇关于在 Android 中以编程方式添加 LinearLayout 不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆