Android 以编程方式更改页边距会导致ClassCastException

Android 以编程方式更改页边距会导致ClassCastException,android,android-layout,classcastexception,Android,Android Layout,Classcastexception,我想在隐藏某些元素时调整布局的边距,所以我尝试了这段代码 RelativeLayout mainLayout; LinearLayout innerLayout; public void hideInfoarea(){ mainLayout = (RelativeLayout) findViewById(R.id.mainContainer); innerLayout = (LinearLayout) findViewById(R.id.innerLayout); mai

我想在隐藏某些元素时调整布局的边距,所以我尝试了这段代码

RelativeLayout mainLayout;
LinearLayout innerLayout;
public void hideInfoarea(){
    mainLayout = (RelativeLayout) findViewById(R.id.mainContainer);
    innerLayout = (LinearLayout) findViewById(R.id.innerLayout);
    mainContainer.removeView(infoLayout);

    //adjust margins
    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)innerLayout.getLayoutParams();
    params.setMargins(10, 0, 0, 10);
    innerLayout.setLayoutParams(params);
}
最初,innerLayout的边距是
10,0,0100
,在我看来,这应该会在infoLayout remotion之后更改
10,0,0,10
中的边距,但不幸的是,我得到了以下错误

 java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
            at com.myapp.test.Myactivity.hideInfoarea(Myactivity.java:371)
            at com.myapp.test.Myactivity.switchBoxStatus(Myactivity.java:360)
            at com.myapp.test.Myactivity.onOptionsItemSelected(Myactivity.java:256)
            at android.app.Activity.onMenuItemSelected(Activity.java:2600)
            at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:372)
            at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1012)
            at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
            at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
            at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
            at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:546)
            at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:115)
            at android.view.View.performClick(View.java:4438)
            at android.view.View$PerformClick.run(View.java:18422)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)

innerLayout在我的xml中是
线性布局
,而不是
相对布局
。因此,我不理解问题的原因,因为您可以阅读android.widget.RelativeLayout$LayoutParams不能强制转换为android.widget.LinearLayout$LayoutParams@dcharms是对的,您应该:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) innerLayout.getLayoutParams();  
因为,包含
内部布局的父视图
相对布局
而不是
线性布局


如果您成功,请告诉我。

您可以显示您在哪里初始化
mainConsole
?如果它是一个
RelativeLayout
请改用
RelativeLayout.LayoutParams-params
。否,它是一个线性布局。在上次编辑代码更改后,您的代码是否仍会引发相同的异常?是的,但Fllo建议修复了我的问题,并让它正常工作。下次发布您的xml布局,帮助我们了解如何定义这些视图。。。谢谢但我有另一个问题