2013-10-10 30 views
0

我创建了一个包含3个RelativeLayout的布局。其中2个是不可见的,当我按下一个按钮时,我想让它们可见并到顶部。可能吗?如何用一个按钮更改布局顺序?

我怎样才能让机器人:

layout_below="@id/pag6a_1" 

编程?


它让我出错!这是我的代码:`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);` 

..和这是我的logcat:

10-10 21:27:11.025:E/AndroidRuntime(3117):致命异常:主 10-10 21: 27:11.025:E/AndroidRuntime(3117):java.lang.RuntimeException:无法启动活动ComponentInfo {com.beandroid.pirani/com.beandroid.pirani.Pag6A}:java.lang.ClassCastException:android.widget.LinearLayout $ LayoutParams不能转换为android.widget.RelativeLayout $ LayoutParams 10-10 21:27:11.025:E/AndroidRuntime(3117):at android.app.Activit yThread.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):在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):在android.os.Looper.loop(Looper.java:137) 10-10 21:27:11.025:E/AndroidRuntime(3117):在android.app.ActivityThread.main(ActivityThread .java:5041) 10-10 21:27:11.025:E/AndroidRuntime(3117):at java.lang.reflect.Method.inv okeNative(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):引起:java.lang.ClassCastException:android.widget.LinearLayout $ LayoutParams不能转换为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) E/AndroidRuntime(3117):在Android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)中的10-10 21:27:11.025:10-10 21:27:11.025:E/AndroidRuntime(3117): 10-10 21:27:11.025。 ..更多

回答

1

我想你正在寻找这样的东西。 -

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

如果我遇到问题,最好有个Linearlayout。在ViewFlipperbutton内设置RelativeLayoutViewFlipper之内。

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

并在按钮的onClick添加`flipper.showNext'。

相关问题