दिलचस्प पोस्ट
PHP परियोजनाओं के लिए एक तैनाती / बिल्ड / सीआई चक्र सेट करना पृष्ठभूमिवर्कर बनाम पृष्ठभूमि थ्रेड XAMPP – पोर्ट 80 "पीआईडी ​​4" के साथ "प्रक्रिया खोलने में असमर्थ" द्वारा उपयोग में है! 12 फ़ाइल भेजने के लिए PHP का प्रयोग करते समय पुनः डाउनलोड किया जा सकता है? एन्कोडिंग "यूटीएफ 8" के लिए अमान्य बाइट अनुक्रम मैं एक HTML तत्व की वास्तविक चौड़ाई और ऊंचाई कैसे प्राप्त करूं? मैं मोबाइल वेब पेज पर "अक्षम" कैसे ज़ूम कर सकता हूं? Java.util.Calendar को समझना WEEK_OF_YEAR NSManagedObject के विशिष्ट उपवर्ग खोजने में असमर्थ PHP regex में बैकस्लैश से बचने का सही तरीका है? मै मैक ओएस एक्स पर स्क्रीन मेनू बार में अपने जेमेनूबार को कैसे स्थानांतरित करूं? विंडोज फॉर्म में किसी अन्य फॉर्म पर नियंत्रण का उपयोग करने का सर्वोत्तम तरीका है? रिकॉर्डिंग करते समय चुप्पी का पता लगाएं $ (यह) AJAX सफलता के अंदर काम नहीं कर रहा है मुझे # डाल देना चाहिए! (शेबांग) पायथन लिपियों में, और यह किस प्रकार लेना चाहिए?

CollapsingToolbarLayout उपशीर्षक

क्या मैं setTitle विधि के माध्यम से CollapsingToolbarLayout का शीर्षक सेट करने में सक्षम हूं?

क्या उपशीर्षक सेट करने का एक तरीका भी है?

वेब के समाधान से एकत्रित समाधान "CollapsingToolbarLayout उपशीर्षक"

यदि आप उपशीर्षक को Toolbar पर जाने के लिए चाहते हैं, जब AppBar पूरी तरह से ढह जाता है, तो आपको अपना कस्टम CoordinatorLayout.Behaviour लेआउट बनाना चाहिए। Beehaviour इस तरह: Github गाइड

लेकिन यदि आप शीर्षक के पीछे एक छोटा पाठ चाहते हैं, जब AppBar विस्तारित हो जाता है, तो आप इस लेआउट की कोशिश कर सकते हैं:

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="300dp" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginBottom="160dp" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:id="@+id/header" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/quila2" android:fitsSystemWindows="true" android:scaleType="centerCrop" app:layout_collapseMode="parallax" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="@android:color/white" android:layout_marginBottom="32dp" android:layout_marginEnd="64dp" android:layout_marginStart="48dp" app:layout_collapseMode="parallax" android:layout_gravity="bottom" android:text="Lorem Ipsum Iran Lorem Ipsum Iran Lorem Ipsum Iran Lorem Ipsum Iran Lorem Ipsum Iran Lorem Ipsum Iran Lorem Ipsum Iran Lorem Ipsum Iran "/> <android.support.v7.widget.Toolbar android:id="@+id/anim_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="none" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" android:lineSpacingExtra="8dp" android:text="@string/lorem" android:textSize="18sp"/> </android.support.v4.widget.NestedScrollView> <android.support.design.widget.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:clickable="true" android:src="@drawable/abc_ic_search_api_mtrl_alpha" app:layout_anchor="@+id/appbar" app:layout_anchorGravity="bottom|right|end" /> </android.support.design.widget.CoordinatorLayout> 

ध्यान दें कि यहां मैंने AppBar ऊंचाई को 300dp और app:expandedTitleMarginBottom सेट app:expandedTitleMarginBottom है app:expandedTitleMarginBottom 160dp इसलिए शीर्षक नीचे नहीं जाएगा और बाहर उपशीर्षक के साथ संघर्ष। इस उदाहरण में आपको CollapsingToolbarTitle गतिशील रूप से रनटाइम में collapsingToolbarTitle.setTitle("My Title"); साथ सेट करना चाहिए collapsingToolbarTitle.setTitle("My Title"); तरीका।

परिणाम कुछ ऐसा होगा:

यहां छवि विवरण दर्ज करें

ऐसा कुछ करने की कोशिश करो, यह मेरे लिए काम करता है मैंने कस्टम व्यूविहेयर बनाया है

 @Override public boolean layoutDependsOn(CoordinatorLayout parent, HeaderView child, View dependency) { return dependency instanceof AppBarLayout; } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, HeaderView child, View dependency) { shouldInitProperties(child, dependency); int maxScroll = ((AppBarLayout) dependency).getTotalScrollRange(); float percentage = Math.abs(dependency.getY()) / (float) maxScroll; float childPosition = dependency.getHeight() + dependency.getY() - child.getHeight() - (getToolbarHeight() - child.getHeight()) * percentage / 2; childPosition = childPosition - mStartMarginBottom * (1f - percentage); CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) child.getLayoutParams(); lp.leftMargin = (int) (percentage * mEndMargintLeft) + mStartMarginLeft; lp.rightMargin = mMarginRight; child.setLayoutParams(lp); child.setY(childPosition); ... return true; } 

और यह मेरा लेआउट

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" > <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:layout_scrollFlags="scroll|exitUntilCollapsed" > <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:scaleType="centerCrop" android:src="@drawable/img_nature" app:layout_collapseMode="parallax" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" > <include android:id="@+id/toolbar_header_view" layout="@layout/header_view" android:layout_height="wrap_content" android:layout_width="match_parent" android:layout_marginRight="@dimen/header_view_end_margin_right" android:visibility="gone" /> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/scroll" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" app:layout_behavior="@string/appbar_scrolling_view_behavior" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > ... </LinearLayout> </android.support.v4.widget.NestedScrollView> <include android:id="@+id/float_header_view" layout="@layout/header_view" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="com.subtitlebehavoir.harcopro.simple.ViewBehavior" /> </android.support.design.widget.CoordinatorLayout> 

ViewHeader लेआउट:

 <?xml version="1.0" encoding="utf-8"?> <com.subtitlebehavoir.harcopro.simple.HeaderView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <!-- Title --> <TextView android:id="@+id/header_view_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/white" android:textSize="18sp" /> <!-- Subtitle --> <TextView android:id="@+id/header_view_sub_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/white" android:textSize="16sp" /> </com.subtitlebehavoir.harcopro.simple.HeaderView> 

यहाँ पर दिया हार्को के आरोपण ( यह ) का संशोधित संस्करण है, जो कि हम लेआउट के विस्तार और संक्षिप्त होने पर शीर्षक के आकार को भी बदल देंगे।

ViewBehavior.java

 public class ViewBehavior extends CoordinatorLayout.Behavior<HeaderView> { private static final float MAX_SCALE = 0.5f; private Context mContext; private int mStartMarginLeft; private int mEndMargintLeft; private int mMarginRight; private int mStartMarginBottom; private boolean isHide; public ViewBehavior(Context context, AttributeSet attrs) { mContext = context; } @Override public boolean layoutDependsOn(CoordinatorLayout parent, HeaderView child, View dependency) { return dependency instanceof AppBarLayout; } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, HeaderView child, View dependency) { shouldInitProperties(child, dependency); int maxScroll = ((AppBarLayout) dependency).getTotalScrollRange(); float percentage = Math.abs(dependency.getY()) / (float) maxScroll; // Set scale for the title float size = ((1 - percentage) * MAX_SCALE) + 1; child.setScaleXTitle(size); child.setScaleYTitle(size); // Set position for the header view float childPosition = dependency.getHeight() + dependency.getY() - child.getHeight() - (getToolbarHeight() - child.getHeight()) * percentage / 2; childPosition = childPosition - mStartMarginBottom * (1f - percentage); CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) child.getLayoutParams(); lp.leftMargin = (int) (percentage * mEndMargintLeft) + mStartMarginLeft; lp.rightMargin = mMarginRight; child.setLayoutParams(lp); child.setY(childPosition); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { if (isHide && percentage < 1) { child.setVisibility(View.VISIBLE); isHide = false; } else if (!isHide && percentage == 1) { child.setVisibility(View.GONE); isHide = true; } } return true; } private void shouldInitProperties(HeaderView child, View dependency) { if (mStartMarginLeft == 0) mStartMarginLeft = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_start_margin_left); if (mEndMargintLeft == 0) mEndMargintLeft = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_end_margin_left); if (mStartMarginBottom == 0) mStartMarginBottom = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_start_margin_bottom); if (mMarginRight == 0) mMarginRight = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_end_margin_right); } public int getToolbarHeight() { int result = 0; TypedValue tv = new TypedValue(); if (mContext.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { result = TypedValue.complexToDimensionPixelSize(tv.data, mContext.getResources().getDisplayMetrics()); } return result; } } 

HeaderView.java

 public class HeaderView extends LinearLayout { @Bind(R.id.header_view_title) TextView title; @Bind(R.id.header_view_sub_title) TextView subTitle; public HeaderView(Context context) { super(context); } public HeaderView(Context context, AttributeSet attrs) { super(context, attrs); } public HeaderView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public HeaderView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onFinishInflate() { super.onFinishInflate(); ButterKnife.bind(this); } public void bindTo(String title) { bindTo(title, ""); } public void bindTo(String title, String subTitle) { hideOrSetText(this.title, title); hideOrSetText(this.subTitle, subTitle); } private void hideOrSetText(TextView tv, String text) { if (text == null || text.equals("")) tv.setVisibility(GONE); else tv.setText(text); } public void setScaleXTitle(float scaleXTitle) { title.setScaleX(scaleXTitle); title.setPivotX(0); } public void setScaleYTitle(float scaleYTitle) { title.setScaleY(scaleYTitle); title.setPivotY(30); } } 

CollapsingToolbarLayout में उपशीर्षक समर्थन एक सुविधा है जिसे मैं भी लम्बा था, इसलिए मैंने एक पुस्तकालय collapsingtoolbarlayout-subtitle बनाया है :

यहां छवि विवरण दर्ज करें

इसे आप किसी भी CollapsingToolbarLayout पर पसंद करें, बस उस पर उपशीर्षक विशेषता जोड़ें:

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <com.hendraanggrian.widget.SubtitleCollapsingToolbarLayout android:id="@+id/subtitlecollapsingtoolbarlayout" android:layout_width="match_parent" android:layout_height="wrap_content" app:contentScrim="?colorPrimary" app:layout_scrollFlags="scroll|exitUntilCollapsed" app:subtitle="CollapsingToolbarLayout" app:title="Subtitle"> <!-- collapsing toolbar content goes here --> <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="?actionBarSize" app:layout_collapseMode="pin"/> </com.hendraanggrian.widget.SubtitleCollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <!-- content goes here --> </android.support.design.widget.CoordinatorLayout> 

मेरे पास एक ही मुद्दा था अंत में मैंने एक रेखीय लयआउट बनाया जिसमें शीर्षक और उपशीर्षक है और फिर विस्तारितTitleTextAppearance को पारदर्शी बनाने के लिए सेट किया गया – लेआउट विस्तारित होने पर टूलबार शीर्षक को प्रभावी रूप से छिपाया गया। इस दृष्टिकोण का उपयोग करके टूलबार लाइनरलेआउट पर गिरता है और अंत में केवल ढह गई स्थिति में शीर्षक दिखाता है।

पूर्ण XML यहां है:

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="@dimen/series_detail_header_height" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:expandedTitleTextAppearance="@style/TransparentText" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_collapseMode="parallax"> <ImageView android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="@dimen/series_detail_header_image_height" android:scaleType="centerCrop"/> <LinearLayout android:id="@+id/header_text_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:background="?attr/colorPrimary" android:gravity="center_vertical" android:minHeight="@dimen/series_detail_text_layout_height" android:orientation="vertical" android:paddingLeft="20dp" android:paddingRight="10dp" android:paddingTop="10dp"> <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="My title" android:textColor="@android:color/white" android:textSize="24sp"/> <TextView android:id="@+id/subtitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@android:color/white" android:textSize="17sp"/> </LinearLayout> </FrameLayout> <View android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@drawable/shape_toolbar_black_gradient" app:layout_collapseMode="pin"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_gravity="top" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/show_view_pager" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:paddingTop="@dimen/toolbar_height" app:layout_behavior="@string/appbar_scrolling_view_behavior"/></android.support.design.widget.CoordinatorLayout> 

सुनिश्चित करें कि आपकी शैली में टेक्स्ट ऍप्परेंस भी फैली हुई है या ऐप क्रैश हो जाएगा, यदि आपकी डिज़ाइन सहायता लाइब्रेरी v22.2.0 है:

 <style name="TransparentText" parent="@android:style/TextAppearance"> <item name="android:textColor">#00666666</item> </style> 

यह बग v22.2.1 ( https://code.google.com/p/android/issues/detail?id=178674 ) में तय किया जा सकता है:

यहां पर हार्को के आरोपण ( यह ) के संशोधित संस्करण को शीर्षक और उपशीर्षक के साथ सेट किया गया है जब खर्च किया जाता है।

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" android:scaleType="centerCrop" android:src="@drawable/img_nature" app:layout_collapseMode="parallax" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin"> <include android:id="@+id/toolbar_header_view" layout="@layout/header_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="@dimen/header_view_end_margin_right" android:visibility="gone" /> </android.support.v7.widget.Toolbar> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/scroll" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> </LinearLayout> </android.support.v4.widget.NestedScrollView> <include android:id="@+id/float_header_view" layout="@layout/header_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_behavior="com.subtitlebehavoir.harcopro.simple.ViewBehavior" /> </android.support.design.widget.CoordinatorLayout> 

dimens.xml

 <resources> <!-- Default screen margins, per the Android Design guidelines. --> <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen> <dimen name="header_view_end_margin_left">56dp</dimen> <dimen name="header_view_end_margin_right">14dp</dimen> <dimen name="header_view_start_margin_bottom">14dp</dimen> </resources> 

header_view.xml

 <?xml version="1.0" encoding="utf-8"?> <com.subtitlebehavoir.harcopro.simple.HeaderView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <!-- Title --> <TextView android:id="@+id/header_view_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLines="1" android:textColor="@android:color/white" android:textSize="18sp" /> <!-- Subtitle --> <TextView android:id="@+id/header_view_sub_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/header_view_title" android:maxLines="1" android:textColor="@android:color/white" android:textSize="16sp" /> </com.subtitlebehavoir.harcopro.simple.HeaderView> 

HeaderView.java

 public class HeaderView extends RelativeLayout { @Bind(R.id.header_view_title) TextView title; @Bind(R.id.header_view_sub_title) TextView subTitle; Context context; public HeaderView(Context context) { super(context); this.context = context; } public HeaderView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; } public HeaderView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.context = context; } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public HeaderView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); this.context = context; } @Override protected void onFinishInflate() { super.onFinishInflate(); ButterKnife.bind(this); } public void bindTo(String title) { bindTo(title, ""); } public void bindTo(String title, String subTitle) { hideOrSetText(this.title, title); hideOrSetText(this.subTitle, subTitle); } private void hideOrSetText(TextView tv, String text) { if (text == null || text.equals("")) tv.setVisibility(GONE); else tv.setText(text); } public void setScaleXTitle(float scaleXTitle) { title.setScaleX(scaleXTitle); title.setPivotX(0); } public void setScaleYTitle(float scaleYTitle) { title.setScaleY(scaleYTitle); title.setPivotY(30); } public TextView getTitle() { return title; } public TextView getSubTitle() { return subTitle; } } 

और व्यूविवियर.जावा

 public class ViewBehavior extends CoordinatorLayout.Behavior<HeaderView> { private static final float MAX_SCALE = 0.5f; private Context mContext; private int mStartMarginLeftTitle; private int mStartMarginLeftSubTitle; private int mEndMargintLeft; private int mMarginRight; private int mStartMarginBottom; private boolean isHide; public ViewBehavior(Context context, AttributeSet attrs) { mContext = context; } @Override public boolean layoutDependsOn(CoordinatorLayout parent, HeaderView child, View dependency) { return dependency instanceof AppBarLayout; } @Override public boolean onDependentViewChanged(CoordinatorLayout parent, HeaderView child, View dependency) { shouldInitProperties(child, dependency); int maxScroll = ((AppBarLayout) dependency).getTotalScrollRange(); float percentage = Math.abs(dependency.getY()) / (float) maxScroll; // Set scale for the title float size = ((1 - percentage) * MAX_SCALE) + 1; child.setScaleXTitle(size); child.setScaleYTitle(size); // Set position for the header view float childPosition = dependency.getHeight() + dependency.getY() - child.getHeight() - (getToolbarHeight() - child.getHeight()) * percentage / 2; childPosition = childPosition - mStartMarginBottom * (1f - percentage); child.setY(childPosition); // Set Margin for title RelativeLayout.LayoutParams lpTitle = (RelativeLayout.LayoutParams) child.getTitle().getLayoutParams(); lpTitle.leftMargin = (int) ((mStartMarginLeftTitle) - (percentage * (mStartMarginLeftTitle - mEndMargintLeft))); if (lpTitle.leftMargin < 20) { lpTitle.leftMargin = 20; } lpTitle.rightMargin = mMarginRight; child.getTitle().setLayoutParams(lpTitle); // Set Margin for subtitle RelativeLayout.LayoutParams lpSubTitle = (RelativeLayout.LayoutParams) child.getSubTitle().getLayoutParams(); lpSubTitle.leftMargin = (int) ((mStartMarginLeftSubTitle) - (percentage * (mStartMarginLeftSubTitle - mEndMargintLeft))); if (lpSubTitle.leftMargin < 20) { lpSubTitle.leftMargin = 20; } lpSubTitle.rightMargin = mMarginRight; child.getSubTitle().setLayoutParams(lpSubTitle); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { if (isHide && percentage < 1) { child.setVisibility(View.VISIBLE); isHide = false; } else if (!isHide && percentage == 1) { child.setVisibility(View.GONE); isHide = true; } } return true; } private void shouldInitProperties(HeaderView child, View dependency) { if (mStartMarginLeftTitle == 0) mStartMarginLeftTitle = getStartMarginLeftTitle(child); if (mStartMarginLeftSubTitle == 0) mStartMarginLeftSubTitle = getStartMarginLeftSubTitle(child); if (mEndMargintLeft == 0) mEndMargintLeft = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_end_margin_left); if (mStartMarginBottom == 0) mStartMarginBottom = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_start_margin_bottom); if (mMarginRight == 0) mMarginRight = mContext.getResources().getDimensionPixelOffset(R.dimen.header_view_end_margin_right); } public int getStartMarginLeftTitle(HeaderView headerView) { TextView title = headerView.getTitle(); DisplayMetrics displaymetrics = new DisplayMetrics(); WindowManager windowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); windowManager.getDefaultDisplay().getMetrics(displaymetrics); int width = displaymetrics.widthPixels; int stringWidth = getStingWidth(title); int marginLeft = (int) ((width / 2) - ((stringWidth + (stringWidth * MAX_SCALE)) / 2)); return marginLeft; } public int getStartMarginLeftSubTitle(HeaderView headerView) { TextView subTitle = headerView.getSubTitle(); DisplayMetrics displaymetrics = new DisplayMetrics(); WindowManager windowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE); windowManager.getDefaultDisplay().getMetrics(displaymetrics); int width = displaymetrics.widthPixels; int stringWidth = getStingWidth(subTitle); int marginLeft = ((width / 2) - (stringWidth / 2)); return marginLeft; } public int getStingWidth(TextView textView) { Rect bounds = new Rect(); Paint textPaint = textView.getPaint(); textPaint.getTextBounds(textView.getText().toString(), 0, textView.getText().toString().length(), bounds); return bounds.width(); } public int getToolbarHeight() { int result = 0; TypedValue tv = new TypedValue(); if (mContext.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { result = TypedValue.complexToDimensionPixelSize(tv.data, mContext.getResources().getDisplayMetrics()); } return result; } }