Ormet
Ormet

Reputation: 75

How can I change the layout order with one button?

I've create one layout with 3 RelativeLayout includes. 2 of these are invisible and I want to make them visible and to the top when I press one button. Is it possible?

How can I make android:

layout_below="@id/pag6a_1"

programmatically?


it makes me an error!! this is my code: `protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pag6a);

    RelativeLayout pag6a_2 = (RelativeLayout) findViewById(R.id.pag6a_2);
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) pag6a_2.getLayoutParams();

    pag6a_2.setVisibility(View.VISIBLE);
    params.addRule(RelativeLayout.BELOW, R.id.pag6a_3);`

..and this is my logcat:

10-10 21:27:11.025: E/AndroidRuntime(3117): FATAL EXCEPTION: main 10-10 21:27:11.025: E/AndroidRuntime(3117): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.beandroid.pirani/com.beandroid.pirani.Pag6A}: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams 10-10 21:27:11.025: E/AndroidRuntime(3117): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 10-10 21:27:11.025: E/AndroidRuntime(3117): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 10-10 21:27:11.025: E/AndroidRuntime(3117): at android.app.ActivityThread.access$600(ActivityThread.java:141) 10-10 21:27:11.025: E/AndroidRuntime(3117): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 10-10 21:27:11.025: E/AndroidRuntime(3117): at android.os.Handler.dispatchMessage(Handler.java:99) 10-10 21:27:11.025: E/AndroidRuntime(3117): at android.os.Looper.loop(Looper.java:137) 10-10 21:27:11.025: E/AndroidRuntime(3117): at android.app.ActivityThread.main(ActivityThread.java:5041) 10-10 21:27:11.025: E/AndroidRuntime(3117): at java.lang.reflect.Method.invokeNative(Native Method) 10-10 21:27:11.025: E/AndroidRuntime(3117): at java.lang.reflect.Method.invoke(Method.java:511) 10-10 21:27:11.025: E/AndroidRuntime(3117): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 10-10 21:27:11.025: E/AndroidRuntime(3117): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 10-10 21:27:11.025: E/AndroidRuntime(3117): at dalvik.system.NativeStart.main(Native Method) 10-10 21:27:11.025: E/AndroidRuntime(3117): Caused by: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams 10-10 21:27:11.025: E/AndroidRuntime(3117): at com.beandroid.pirani.Pag6A.onCreate(Pag6A.java:44) 10-10 21:27:11.025: E/AndroidRuntime(3117): at android.app.Activity.performCreate(Activity.java:5104) 10-10 21:27:11.025: E/AndroidRuntime(3117): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 10-10 21:27:11.025: E/AndroidRuntime(3117): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 10-10 21:27:11.025: E/AndroidRuntime(3117): ... 11 more

Upvotes: 0

Views: 511

Answers (2)

NewDev
NewDev

Reputation: 21

If I get the question right it's better to have a Linearlayout. inside of that a ViewFlipper and a button set the RelativeLayout inside of ViewFlipper.

ViewFlipper fliper = (ViewFlipper) findViewById(R.id.viewFlipperid);

and in button's onClick add `flipper.showNext'.

Upvotes: 0

ssantos
ssantos

Reputation: 16526

I guess you're looking for something like this.-

RelativeLayout yourLayout = (RelativeLayout) findViewById(R.id.yourLayoutId);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) yourLayout.getLayoutParams();
params.addRule(RelativeLayout.BELOW, R.id.pag6a_1);

Upvotes: 1

Related Questions