2013-10-10 2 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: Е/AndroidRuntime (3117): неустранимые: Главный 10-10 21: 27: 11.025: E/AndroidRuntime (3117): java.lang.RuntimeException: не удается запустить Activity 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): 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.inv okeNative (родной метод) 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 (родной метод) 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) 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 еще

ответ

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. внутри этого a ViewFlipper и button установить RelativeLayout внутри ViewFlipper.

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

и баттона onClick оных `flipper.showNext».

Смежные вопросы