I have two relative layouts. Both have width of fill parent and height of 100 dip. My requirement is when I click the first layout it should shrink to 50dip height and the other expand to the 150dip height. While doing this I got exception. Please help me how to change the layout width and height at run time.
final LinearLayout RLChange = new LinearLayout(this);
RLChange.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
RLChange.setOrientation(LinearLayout.VERTICAL);
final LinearLayout RLGreen = new LinearLayout(this);
RLGreen.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
300));
RLGreen.setBackgroundColor(Color.GREEN);
RLGreen.setOrientation(LinearLayout.HORIZONTAL);
Button btnClick = new Button(this);
btnClick.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
btnClick.setBackgroundColor(Color.RED);
RLGreen.addView(btnClick);
final LinearLayout RLYellow = new LinearLayout(this);
RLYellow.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
200));
RLYellow.setBackgroundColor(Color.YELLOW);
btnClick.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "click", Toast.LENGTH_SHORT).show();
RLGreen.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
}
});
RLChange.addView(RLGreen);
RLChange.addView(RLYellow);
setContentView(RLChange);
Log Cat
03-10 11:01:35.328: INFO/NotificationService(574): enqueueToast pkg=Changewidth.com callback=android.app.ITransientNotification$Stub$Proxy@43948648 duration=0
03-10 11:01:35.388: DEBUG/AndroidRuntime(1505): Shutting down VM
03-10 11:01:35.388: WARN/dalvikvm(1505): threadid=3: thread exiting with uncaught exception (group=0x4001aa28)
03-10 11:01:35.398: ERROR/AndroidRuntime(1505): Uncaught handler: thread main exiting due to uncaught exception
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.widget.LinearLayout.measureVertical(LinearLayout.java:326)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.view.View.measure(View.java:7703)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.view.View.measure(View.java:7703)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.widget.LinearLayout.measureVertical(LinearLayout.java:464)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.view.View.measure(View.java:7703)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.view.View.measure(View.java:7703)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.view.ViewRoot.performTraversals(ViewRoot.java:747)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.view.ViewRoot.handleMessage(ViewRoot.java:1613)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.os.Handler.dispatchMessage(Handler.java:99)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.os.Looper.loop(Looper.java:123)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at android.app.ActivityThread.main(ActivityThread.java:4203)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at java.lang.reflect.Method.invokeNative(Native Method)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at java.lang.reflect.Method.invoke(Method.java:521)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
03-10 11:01:35.449: ERROR/AndroidRuntime(1505): at dalvik.system.NativeStart.main(Native Method)
03-10 11:01:35.479: INFO/Process(574): Sending signal. PID: 1505 SIG: 3
03-10 11:01:35.479: INFO/dalvikvm(1505): threadid=7: reacting to signal 3
03-10 11:01:35.619: INFO/dalvikvm(1505): Wrote stack trace to '/data/anr/traces.txt'
03-10 11:01:35.779: DEBUG/dalvikvm(623): GC freed 3557 objects / 196272 bytes in 448ms
Convert a view or layout Click the Design button in the top-right corner of the editor window. In the Component Tree, right-click the view or layout, and then click Convert view.... In the dialog that appears, choose the new type of view or layout, and then click Apply.
First get layout params using view. getLayoutParams(). Second then set the height and width value then last set the layout params of view. Save this answer.
In onClick Listener add this code.
Button button = (Button) findViewById(view.getId());
LinearLayout rLGreen = ((LinearLayout) button.getParent());
rLGreen.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
It will work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With