Android-以编程方式将屏幕划分为布局
我试图以编程方式划分屏幕,如下所示:Android-以编程方式将屏幕划分为布局,android,android-layout,android-linearlayout,Android,Android Layout,Android Linearlayout,我试图以编程方式划分屏幕,如下所示: |-------------| | | | | | | |--|----------| | | | |--|----------| 我有一个主要的线性布局,里面有两个线性布局,一个是topLL,重量为1,一个是bottomLL,重量为5 在Bottomlll内部还有两个线性布局,位于BottomlLeftll上,重量为5,一个位于BottomlRight上,重量为5
|-------------|
| |
| |
| |
|--|----------|
| | |
|--|----------|
我有一个主要的线性布局,里面有两个线性布局,一个是topLL,重量为1,一个是bottomLL,重量为5
在Bottomlll内部还有两个线性布局,位于BottomlLeftll上,重量为5,一个位于BottomlRight上,重量为50
实际结果几乎是正确的,是这样的:
|-------------|
| |
| |
| |
|------|------|
| | |
|------|------|
顶部和底部被正确划分,但底部左侧和底部右侧得到的是底部的相同部分,而不是我提到的权重
知道为什么吗?编辑:以下是相关代码:
main = new LinearLayout(....);
LinearLayout.LayoutParams mainLayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
main.setLayoutParams(mainLayoutParams);
main.setOrientation(LinearLayout.VERTICAL);
main.setHorizontalGravity(Gravity.CENTER_HORIZONTAL);
main.setVerticalGravity(Gravity.CENTER_VERTICAL);
LinearLayout mainTop = new LinearLayout(....);
LinearLayout.LayoutParams mainTopLayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
mainTopLayoutParams.weight = 1;
mainTop.setLayoutParams(mainTopLayoutParams);
mainTop.setOrientation(LinearLayout.VERTICAL);
mainTop.setHorizontalGravity(Gravity.CENTER_HORIZONTAL);
mainTop.setVerticalGravity(Gravity.CENTER_VERTICAL);
LinearLayout mainBottom = new LinearLayout(...);
LinearLayout.LayoutParams mainBottomLayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
mainBottomLayoutParams.weight = 5;
mainBottom.setLayoutParams(mainBottomLayoutParams);
//mainBottom.setWeightSum(55); - it was suggested but didn't work
mainBottom.setOrientation(LinearLayout.HORIZONTAL);
mainBottom.setHorizontalGravity(Gravity.CENTER_HORIZONTAL);
mainBottom.setVerticalGravity(Gravity.CENTER_VERTICAL);
LinearLayout mainBottomLeft = new LinearLayout(...);
LinearLayout.LayoutParams mainBottomLeftLayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
mainBottomLeftLayoutParams.weight = 50;
mainBottomLeft.setLayoutParams(mainBottomLeftLayoutParams);
mainBottomLeft.setOrientation(LinearLayout.HORIZONTAL);
mainBottomLeft.setHorizontalGravity(Gravity.END);
mainBottomLeft.setVerticalGravity(Gravity.CENTER_VERTICAL);
LinearLayout mainBottomRight = new LinearLayout(...);
LinearLayout.LayoutParams mainBottomRightLayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
mainBottomRightLayoutParams.weight = 5;
mainBottomRight.setLayoutParams(mainBottomLeftLayoutParams);
mainBottomRight.setOrientation(LinearLayout.HORIZONTAL);
mainBottomRight.setHorizontalGravity(Gravity.START);
mainBottomRight.setVerticalGravity(Gravity.CENTER_VERTICAL);
谢谢。您可以通过对这些视图应用LayoutParams,以编程方式传递每个左下和右下部分的“权重”
假设您已经引用了这两个底部部分:
LinearLayout llBottomLeft = (LinearLayout) findViewById(....;
LinearLayout llBottomRight = ....;
LinearLayout.LayoutParams llParam1 = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, 5.0f);
LinearLayout.LayoutParams llParam2 = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, 50.0f);
llBottomLeft.setLayoutParams(llParam1);
llBottomRight.setLayoutParams(llParam2);
请记住,还要将一个值为“55”的“weightSum”参数放入其公共父级:
llBottomContainer.setWeightSum(55.0f)代码>您可以通过对这些视图应用LayoutParams,以编程方式传递每个左下和右下部分的“权重”
假设您已经引用了这两个底部部分:
LinearLayout llBottomLeft = (LinearLayout) findViewById(....;
LinearLayout llBottomRight = ....;
LinearLayout.LayoutParams llParam1 = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, 5.0f);
LinearLayout.LayoutParams llParam2 = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, 50.0f);
llBottomLeft.setLayoutParams(llParam1);
llBottomRight.setLayoutParams(llParam2);
请记住,还要将一个值为“55”的“weightSum”参数放入其公共父级:
llBottomContainer.setWeightSum(55.0f)代码>无效:(我认为如果我提供一些代码会更好,请尽快查看我的编辑在您的示例代码中,我没有看到您实际将新布局参数应用于实际的左右线性布局的位置,因此llBottomLeft.setLayoutParams(llParam1)
part。我正在做mainBottomLayoutParams.weight=5;而不是该死的!这最终是我代码中的复制粘贴问题。感谢所有帮助人员:)我正在做mainBottomLayoutParams.weight=5;相反
这很好,但是在为LayoutParams对象设置一些权重之后,还需要将生成的LayoutParams对象设置为LinearLayout的当前LayoutParams,因此使用了ll.setLayoutParams()
。它不起作用:(我认为如果我提供一些代码会更好,请参阅我的编辑。在您的示例代码中,我没有看到您实际将新布局参数应用于实际的左侧和右侧线性布局的位置,因此,llBottomLeft.setLayoutParams(llParam1)
part.我正在做mainBottomLayoutParams.weight=5;而不是该死的!这最终是我代码中的复制粘贴问题。感谢所有帮助人员:)我正在执行mainbotmLayoutParams.weight=5;相反
这很好,但是在为LayoutParams对象设置一些权重之后,还需要将生成的LayoutParams对象设置为LinearLayout的当前LayoutParams,因此使用ll.setLayoutParams()
。