I want use android.support.design.widget.CoordinatorLayout
, android.support.design.widget.AppBarLayout
, android.support.design.widget.CollapsingToolbarLayout
in my xml file. What are the possibilities to position a view below another view?
for example : position ScrollView
beneath ImageView
in CoordinatorLayout
.
my xml code :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/background_color" tools:context="com.tellfa.smsbox.activities.postShow_Page"> <android.support.design.widget.CoordinatorLayout android:id="@+id/post_show_coordinator" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/post_show_collapsing_toolbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:contentScrim="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" > <ImageView android:id="@+id/post_picture_image" android:layout_width="fill_parent" android:layout_height="200dp" android:scaleType="centerCrop" android:src="@drawable/cover_menu_bg2" android:visibility="visible" app:layout_collapseMode="parallax" /> <android.support.v7.widget.Toolbar android:id="@+id/post_show_app_bar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:layout_collapseMode="pin"> <ImageView android:id="@+id/post_show_fav_image" android:layout_width="25dp" android:layout_height="25dp" android:layout_gravity="right" android:layout_marginRight="10dp" android:alpha="0.7" android:src="@drawable/favorite_post_un" /> <ImageView android:id="@+id/post_show_share_image" android:layout_width="25dp" android:layout_height="25dp" android:layout_gravity="right" android:layout_marginRight="10dp" android:alpha="0.7" android:src="@drawable/abc_ic_menu_share_mtrl_alpha" /> <ImageView android:id="@+id/post_show_report_image" android:layout_width="25dp" android:layout_height="25dp" android:layout_gravity="right" android:layout_marginRight="10dp" android:alpha="0.7" android:padding="2dp" android:src="@drawable/post_report" /> </android.support.v7.widget.Toolbar> <RelativeLayout android:id="@+id/post_show_space" android:layout_width="fill_parent" android:layout_height="?attr/actionBarSize" android:layout_below="@+id/post_picture_image" android:visibility="gone" /> <ScrollView android:id="@+id/post_text_layout" style="@style/scrollbar_shape_style" android:layout_width="fill_parent" android:layout_height="140dp" android:layout_gravity="bottom" app:layout_collapseMode="parallax"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/category_text"> <com.tellfa.smsbox.components.tellfa_TextView_en android:id="@+id/post_text_text" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="2dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:text="@string/connect_info" android:textColor="@color/top_user_bg" android:textSize="18sp" /> </RelativeLayout> </ScrollView> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout> </RelativeLayout>
How to set ScrollView
below in ImageView
? TNX <3
The reason behind this is, you have to explicitly handle the motions or you may say the animations of all the views that are present on a particular page of your mobile application. So, in order to handle the views (especially the view that is having some motion) in a better way, Android introduced a new layout called the CoordinatorLayout.
And you have to use app:layout_anchorGravity to position the child. Do not use both of these together in any view. It may cause of unexpected result. app:layout_anchor: This attribute can be set on children of the CoordinatorLayout to attach them to another view.
Coordinator Layout is used to manage the transactions and animation of various views present in an Activity. Before Coordinator Layout, Frame Layout was used, but using more than one views in Frame Layout results in overlapping of views over one another. At the end of the blog, we did some examples to have a clear understanding.
RelativeLayout lets child views specify their position relative to the parent view or to each other (specified by ID). So you can align two elements by right border, or make one below another, centered in the screen, centered left, and so on.
I assume you are trying to position views inside of the CollapsingToolbarLayout
. The CollapsingToolbarLayout
extends FrameLayout
, so the only possibility is to position views is to utilize view margin and gravity. In your case you could position a ImageView
like:
<ImageView android:layout_width="match_parent" android:layout_height="100dp" android:layout_marginTop="140dp" <-height of the ScrollView />
If you are trying to add the new ImageView
directly to the CoordinatorLayout
you can utilize a anchor:
<ImageView android:layout_width="match_parent" android:layout_height="100dp" app:layout_anchor="@+id/post_text_layout" <-view to anchor the imageview app:layout_anchorGravity="bottom" <- specifies edge of the anchor that should be used android:layout_gravity="bottom" <- how to position this view relatively to the anchoring position />
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With