I have a problem. I want to set the margin params programatically, but it doesn't work. I have this xml style sheet:
<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>
and I want to set the margins programatically. But I get this error:
java.lang.ClassCastException: android.support.design.widget.CoordinatorLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
And I do this in my Activity:
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);
What can I do to fix this? I've found nothing that helped me. Thank you!
LayoutParams are always associated with the Parent Layout of the layout you find.
Since your layout file in the question is clipped, i am assuming based on the output that the view_bottom_layout
is inside a CoordinateLayout.
If so, you need the params of the CoordinateLayout and set them:
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) bottomLayout.getLayoutParams();
params.setMargins(0,imageView.getHeight(),0,0);
bottomLayout.setLayoutParams(params);