在 Android 中以编程方式添加 LinearLayout 不起作用 [英] Adding LinearLayout programmatically in Android doesn't work
本文介绍了在 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屋!
- FrameLayout(权重 5)
- 线性布局(垂直)
查看全文