2010-09-01 116 views
2

我需要根据从配置文件加载的信息动态(以编程方式)调整我的应用程序的最顶层布局。如何动态调整android布局

眼下main.xml中我有

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout 
      android:id="@+id/LinearLayout01" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:background="@drawable/background"> 
    </LinearLayout> 

所以我在寻找一种方式来改变的android:layout_width和layout_height编程。

任何帮助,将不胜感激

RM

编辑:

按照建议,我已经试过如下:

LinearLayout l2 = (LinearLayout)findViewById(R.id.LinearLayout07); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT,1); 
l2.setLayoutParams(params); 

但是运行的时候,给我下面的错误:

Thread [<3> main] (Suspended (exception ClassCastException))  
FrameLayout.onLayout(boolean, int, int, int, int) line: 288 
FrameLayout(View).layout(int, int, int, int) line: 6133 
.... 
+0

检查了这一点 http://d.android.com/reference/android/widget/LinearLayout.LayoutParams.html – 2010-09-01 15:14:24

+0

我试过,但我想我做的不对的财产以后..生病后更多的代码 – 2010-09-01 15:22:51

回答

3
LinearLayout.LayoutParams params = 
       new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT,1); 


layout.setLayoutParams(params); 

其中布局是您使用findViewById获取的LinearLayout。在我的示例中,宽度和高度的参数为fill_parent,权重为1.

除了fill_parent选项,您当然可以使用像素中的固定大小,或者如果不需要,可以省略重量。

+0

多数民众赞成IV过试图做,但应用程序崩溃时,我添加此代码... 这是最后两行的堆栈: (暂停(异常ClassCastException))\t FrameLayout.onLayout(boolean,int,int,int,int)行:288 – 2010-09-01 17:11:10

+0

也许重量是做一些奇怪的内部组件。你可以再试一次,但没有最后一个参数(最后没有1)。尝试添加像素大小而不是fill_parent。是否出现相同的错误? – Milan 2010-09-01 21:22:47

0

当您尝试获取您的LinearLayout时,我发现了一处错误。你把它写为LinearLayout07而不是LinearLayout01