2016-07-27 43 views
0

我遇到问题。我想以编程方式设置边距参数,但它不起作用。 我有这样的XML样式表:LinearLayout无法铸造到CoordinatorLayout

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 


</android.support.design.widget.AppBarLayout> 


<ImageView 
    android:layout_width="1440px" 
    android:layout_height="1000px" 
    android:id="@+id/post_view_photo" 
    android:transitionName="@string/transition_image"/> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical|start" 
    android:layout_margin="@dimen/fab_margin" 
    app:layout_anchor="@+id/post_view_photo" 
    android:src="@android:drawable/stat_notify_chat" 
    app:layout_anchorGravity="bottom|end" /> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    app:layout_anchor="@+id/post_view_photo" 
    app:layout_anchorGravity="bottom|start"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/text_bar" 
     android:background="@color/colorPrimary"> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/username_text" 
      android:layout_gravity="center_vertical|start" 
      app:layout_anchor="@+id/post_view_photo" 
      app:layout_anchorGravity="bottom|start" 
      android:textSize="25dp" 
      android:transitionName="@string/transition_username"/> 
    </LinearLayout> 
</LinearLayout> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_marginTop="808px" 
    android:id="@+id/view_bottom_layout"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 
      <ImageView 
       android:layout_width="40dp" 
       android:layout_height="40dp" 
       android:id="@+id/post_user_image" 
       android:src="@drawable/back" 
       android:paddingTop="10px"/> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/post_view_maintext"/> 
     </LinearLayout> 

    </LinearLayout> 

    <View 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:background="#414141"/> 
</LinearLayout> 

,我希望通过编程设置页边距。但是,我得到这个错误:

java.lang.ClassCastException: android.support.design.widget.CoordinatorLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams 

,我做这在我的活动:

LinearLayout bottomLayout = (LinearLayout)findViewById(R.id.view_bottom_layout); 
         LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) bottomLayout.getLayoutParams(); 
         params.setMargins(0,imageView.getHeight(),0,0); 
         bottomLayout.setLayoutParams(params); 

我能做些什么来解决这个问题?我找不到任何帮助我的东西。谢谢!

回答

3

LayoutParams总是与您找到的布局的父布局相关联。

由于您的布局文件中的问题被剪裁,我假设根据view_bottom_layout是在CoordinateLayout内的输出。

如果是这样,你需要的CoordinateLayout的PARAMS并将它们设置:

    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) bottomLayout.getLayoutParams(); 
        params.setMargins(0,imageView.getHeight(),0,0); 
        bottomLayout.setLayoutParams(params); 
1

实际上,你必须投getLayoutParams()它的父,你的情况这是一个Coordinator Layout