层次结构是这样的:
- RelativeLayout
- LinearLayout (vertical)
- FrameLayout (weight 5)
- 视图(重量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);
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,以便我们确切地知道您想要什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)