2013-10-10 35 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'。