この効果を得るためにCoordinatorLayout
を使用しています:
レイアウトコードは次のとおりです。
<?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:id="@+id/coordinatorRootLayout"
Android:background="@Android:color/background_light"
Android:fitsSystemWindows="true"
>
<Android.support.design.widget.AppBarLayout
Android:id="@+id/Android_appbar_layout"
Android:layout_width="match_parent"
Android:layout_height="220dp"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/collapsingToolbarLayoutAndroidExample"
Android:layout_width="match_parent"
Android:background="#fff"
app:collapsedTitleGravity="left"
app:expandedTitleTextAppearance="@color/card_outline"
Android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
Android:fitsSystemWindows="true"
app:expandedTitleGravity="center_horizontal"
app:contentScrim="?attr/colorPrimary"
app:statusBarScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="32dp"
app:expandedTitleMarginEnd="48dp">
<ImageView
Android:id="@+id/parallax_header_imageview"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:scaleType="fitXY"
Android:src="@drawable/orange_triangle"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="0.8"/>
<ImageView
app:expandedTitleGravity="center_horizontal"
Android:id="@+id/someImage"
Android:layout_width="100dp"
Android:layout_height="100dp"
Android:src="@drawable/circle"
Android:layout_gravity="center_horizontal"
app:layout_collapseMode="parallax"
app:layout_collapseParallaxMultiplier="-1"
/>
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar_Android"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="none"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
<Android.support.v4.widget.NestedScrollView
Android:id="@+id/nested_scroll_view"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
Android:id="@+id/linear_layout_Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:padding="15dp"
Android:background="@color/off_white"
Android:layout_gravity="center_horizontal"
Android:gravity="center_horizontal"
Android:orientation="vertical">
<GridView
Android:id="@+id/gridview_parallax_header"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:columnWidth="100dp"
Android:gravity="center"
Android:numColumns="auto_fit"
Android:stretchMode="columnWidth" />
</LinearLayout>
</Android.support.v4.widget.NestedScrollView>
</Android.support.design.widget.CoordinatorLayout>
そして、これは私が出力として得ているものですタイトルのテキストでアイコンをどのように使用できますか?
以下を試すことができます
今あなたのMainActivity.Java
private void handleToolbarTitleVisibility(float percentage) {
if (percentage >= PERCENTAGE_TO_SHOW_TITLE_AT_TOOLBAR) {
if(!mIsTheTitleVisible) {
startAlphaAnimation(textviewTitle, ALPHA_ANIMATIONS_DURATION, View.VISIBLE);
toolbar.setAlpha(0.9f);
toolbar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.Primary)));
mIsTheTitleVisible = true;
}
}
else {
if (mIsTheTitleVisible) {
startAlphaAnimation(textviewTitle, ALPHA_ANIMATIONS_DURATION, View.INVISIBLE);
toolbar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(Android.R.color.transparent)));
mIsTheTitleVisible = false;
}
}
}
注:ツールバーを展開しても、背景は透明のままにしてください。
私はあなたに試すことをお勧めします 子供と依存関係
public boolean onDependentViewChanged(
CoordinatorLayout parent,
CircleImageView avatar,
View dependency) {
modifyAvatarDependingDependencyState(avatar, dependency);
}
private void modifyAvatarDependingDependencyState(
CircleImageView avatar, View dependency) {
// avatar.setY(dependency.getY());
// avatar.setBlahBlat(dependency.blah / blah);
}
http://www.devexchanges.info/2016/03/Android-tip-custom-coordinatorlayout.html
この例から参照を取ることができます:-
これはあなたの問題を解決するかもしれません:
次のCollapsingToolbarLayout
属性を使用して、展開したタイトルを好きな場所に配置できます。
app:expandedTitleGravity default is bottom|left -or- bottom|start
app:expandedTitleMargin
app:expandedTitleMarginBottom
app:expandedTitleMarginStart
app:expandedTitleMarginEnd
レイアウトファイルのコード:
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/collapse_toolbar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
Android:fitsSystemWindows="true">
<ImageView
Android:id="@+id/bgheader"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:scaleType="centerCrop"
Android:fitsSystemWindows="true"
Android:background="@drawable/sunflowerpic"
app:layout_collapseMode="pin" />
<Android.support.v7.widget.Toolbar
Android:id="@+id/MyToolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="parallax" />
</Android.support.design.widget.CollapsingToolbarLayout>
次に、JavaファイルSetTitle:
CollapsingToolbarLayout collapsingToolbar =
(CollapsingToolbarLayout) findViewById(R.id.collapse_toolbar);
collapsingToolbar.setTitle("Title");
上隅にアイコンを追加:ImagViewでapp:layout_collapseMode="pin"
を使用します。たとえば.
<ImageView
Android:id="@+id/someImage"
Android:layout_width="56dp"
Android:layout_height="wrap_content"
Android:src="@drawable/someDrawable"
Android:padding="16dp"
Android:layout_gravity="top|end"
app:layout_collapseMode="pin"
/>
このリンクへの参照 折りたたみツールバーの例