dynamic更改Android上的线性布局宽度或高度

我试图改变线性布局或任何其他部件的宽度或高度dynamic,但抛出exception。

我的布局是:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/abc" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="ghghjkgj ghjg hjgj ghj g hjgjgh jhg " /> </LinearLayout> 

和我的活动是:

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout ll = (LinearLayout)findViewById(R.id.abc); ll.setLayoutParams(new LinearLayout.LayoutParams(30,60)); } 

抛出以下exception:

 E/AndroidRuntime(16052): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams E/AndroidRuntime(16052): at android.widget.FrameLayout.onLayout(FrameLayout.java:288) E/AndroidRuntime(16052): at android.view.View.layout(View.java:7035) E/AndroidRuntime(16052): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) E/AndroidRuntime(16052): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) E/AndroidRuntime(16052): at android.widget.LinearLayout.onLayout(LinearLayout.java:1042) E/AndroidRuntime(16052): at android.view.View.layout(View.java:7035) E/AndroidRuntime(16052): at android.widget.FrameLayout.onLayout(FrameLayout.java:333) E/AndroidRuntime(16052): at android.view.View.layout(View.java:7035) E/AndroidRuntime(16052): at android.view.ViewRoot.performTraversals(ViewRoot.java:1045) E/AndroidRuntime(16052): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) E/AndroidRuntime(16052): at android.os.Handler.dispatchMessage(Handler.java:99) E/AndroidRuntime(16052): at android.os.Looper.loop(Looper.java:123) E/AndroidRuntime(16052): at android.app.ActivityThread.main(ActivityThread.java:4627) E/AndroidRuntime(16052): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(16052): at java.lang.reflect.Method.invoke(Method.java:521) E/AndroidRuntime(16052): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) E/AndroidRuntime(16052): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) E/AndroidRuntime(16052): at dalvik.system.NativeStart.main(Native Method) 

那么如何dynamic地改变尺寸?

Solutions Collecting From Web of "dynamic更改Android上的线性布局宽度或高度"

检查这个 – http://smartandroidians.blogspot.com/2010/04/changing-layout-height-dynamically.html

 ll.getLayoutParams().height = 300; ll.getLayoutParams().width = 200; ll.requestLayout(); 

这也适用于事件处理程序。

这里的问题是,当你设置布局参数types需要是父,在这种情况下,这是一个FrameLayout。 你需要这样做:

 ll.setLayoutParams(new FrameLayout.LayoutParams(30,60)); 

这个简单的方法来完成你的任务:

 setContentView(R.id.main); LinearLayout layout= (LinearLayout) findViewById(R.id.left); int width=60; int height=60; LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(width,height); layout.setLayoutParams(parms); 

另一种方法,如果你想给高度和宽度的屏幕大小,然后使用下面的代码:

 setContentView(R.id.main); Display display = getWindowManager().getDefaultDisplay(); LinearLayout layout= (LinearLayout) findViewById(R.id.left); int width=display.getWidth(); int height=display.getHeight(); LinearLayout.LayoutParams parms = new inearLayout.LayoutParams(width,height); layout.setLayoutParams(parms); 

希望对你充分使用。