gpt4 book ai didi

android - 设置 CollapsingToolbarLayout 的起始高度

转载 作者:IT老高 更新时间:2023-10-28 22:17:32 42 4
gpt4 key购买 nike

我希望能够在 CollapsingToolbarLayout 内的 ImageView 上滚动。那么这怎么可能,以及如何设置该 ImageView 的起始高度?

我的 ImageView 高度是 280p,在 Activity 开始时我想显示 200p,然后我可以向下滚动以查看图像的其余部分。我在 WhatsApp 应用程序中看到过类似的东西。

这是一个链接,看看我想要什么:

enter image description here

我的代码:

<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.yasser.version6.Profile">

<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:fitsSystemWindows="true"
android:layout_height="@dimen/app_bar_height"
android:layout_width="match_parent"
android:theme="@style/MyMaterialTheme.AppBarOverlay">

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:contentScrim="?attr/colorPrimary">

<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/tof" />

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
app:layout_collapseMode="pin"
app:popupTheme="@style/MyMaterialTheme.PopupOverlay" />

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

<include
android:id="@+id/content"
layout="@layout/content_profile" />


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

内容配置文件代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
tools:showIn="@layout/activity_profile"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.yasser.version6.Profile">

</android.support.v4.widget.NestedScrollView>

最佳答案

实际上 AppBarLayout 有特殊的方法来应用这样的偏移:

final int setAppBarTopBottomOffset(CoordinatorLayout coordinatorLayout, AppBarLayout appBarLayout, int newOffset, int minOffset, int maxOffset)

不幸的是它具有包私有(private)访问级别,但我们可以通过这样的中间链调用它:

private void setAppBarOffset(int offsetPx){
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
behavior.onNestedPreScroll(mCoordinatorLayour, mAppBarLayout, null, 0, offsetPx, new int[]{0, 0});
}

有一点需要提一下——这个方法应该在 mAppBarLayout 已经准备好和测量之后调用。所以正确的方法是通过view的post方法调用。

mCoordinatorLayour = (CoordinatorLayout) findViewById(R.id.root_coordinator);
mAppBarLayout = (AppBarLayout) findViewById(R.id.app_bar_layout);

mAppBarLayout.post(new Runnable() {
@Override
public void run() {
int heightPx = findViewById(R.id.iv_header).getHeight();
setAppBarOffset(heightPx/2);
}
});

关于android - 设置 CollapsingToolbarLayout 的起始高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33058496/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com