Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to change the layout width and height in Android at run time?

Tags:

android

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
like image 922
indira Avatar asked Mar 01 '11 06:03

indira


People also ask

How can I change my Android layout?

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.

What are two different ways to set the height and width of component in Android?

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.


1 Answers

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.

like image 183
Saurabh Pareek Avatar answered Oct 17 '22 09:10

Saurabh Pareek