我正在使用带有viewpager的CollapsingBarLayout,而viewpager的片段正在使用listview,gridview。
这是我的代码:
<?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:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.bigsteptech.seandroidnativeapp.classes.modules.common.ViewGroupEvent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:fitsSystemWindows="true">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:expandedTitleTextAppearance="@style/TransparentText">
<FrameLayout
android:id="@+id/carouselLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_collapseMode="parallax">
<ImageView
android:id="@+id/coverImage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"/>
<LinearLayout
android:layout_width="match_parent"
android:gravity="bottom"
android:orientation="vertical"
android:layout_gravity="bottom"
android:padding="@dimen/profile_image_margin"
android:background="@drawable/gradient_bg"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/profile_image_margin"
android:textSize="@dimen/text_size_xlarge"
android:textStyle="bold"
android:textColor="@color/white"
android:id="@+id/content_title"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_marginLeft="@dimen/profile_image_margin"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textColor="@color/white"
android:textSize="@dimen/text_size_medium"
android:id="@+id/category_title"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:layout_toRightOf="@+id/category_title"
android:layout_marginLeft="@dimen/profile_image_margin"
android:textColor="@color/white"
android:textSize="@dimen/text_size_medium"
android:id="@+id/memberCount"/>
</RelativeLayout>
</LinearLayout>
</FrameLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@style/ActionBarThemeOverlay"
app:popupTheme="@style/ActionBarPopupThemeOverlay"
android:background="@drawable/gradient_bg"
app:layout_collapseMode="pin" />
</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:layout_gravity="fill_vertical"
android:isScrollContainer="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/contentInfo"
android:paddingBottom="48sp"
android:clipToPadding="false"
android:orientation="vertical">
<ProgressBar
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/profile_page_left_right_margin"
android:layout_gravity="center"
android:id="@+id/progressBar"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@color/grey_light">
<TextView android:id="@+id/ownerTitle"
android:clickable="true"
android:focusable="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/keyline_1"
android:layout_gravity="center_vertical"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textColor="@color/body_text_1" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/profile_image_margin"
android:padding="10dp">
<com.bigsteptech.seandroidnativeapp.Classes.Modules.Common.ViewRelated.ExpandableTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/keyline_1"
style="@style/TextBody"
android:layout_gravity="center_vertical"
android:id="@+id/view_description" />
</LinearLayout>
<android.support.design.widget.TabLayout
android:id="@+id/slidingTabs"
android:layout_width="match_parent"
app:tabIndicatorHeight="3dp"
app:tabMode="scrollable"
android:layout_height="wrap_content"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="300dp">
</android.support.v4.view.ViewPager>
</LinearLayout>
</RelativeLayout>
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.FloatingActionButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
app:layout_anchor="@id/appbar"
android:id="@+id/joinGroupButton"
app:layout_anchorGravity="bottom|right|end"
android:src="@drawable/ic_action_new"
android:layout_margin="@dimen/fab_margin"
android:clickable="true"/>
</android.support.design.widget.CoordinatorLayout>
具有listview,gridview的片段不会在折叠工具栏中向上滚动,我怎样才能实现这个工作..
请帮助我,非常感谢你... ...
答案 0 :(得分:8)
您需要将ViewPager放入AppBar部分并设置 layout_behavior :
<android.support.design.widget.AppBarLayout>>
<android.support.design.widget.CollapsingToolbarLayout>
// THIS VIEWS WILL BE COLLAPSED
</android.support.design.widget.CollapsingToolbarLayout>
// THIS VIEWS WILL BE PINNED
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="300dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.v4.view.ViewPager>
</android.support.design.widget.AppBarLayout>
如果您使用Fragments作为ViewPager的子级,则需要将 layout_behavior 设置为ViewPager中的每个片段。
app:layout_behavior="@string/appbar_scrolling_view_behavior"
答案 1 :(得分:4)
使用新材料设计支持库折叠工具栏和标签
我使用了新材料设计支持库的官方折叠工具栏功能。
此处折叠视图高度为256dp,标签高度为56dp
我做了以下路径
我将图像切割成两部分,一部分用于折叠视图,另一部分用于标签。
我根据dp to pixel尺寸切割图像,使用高分辨率可绘制xxxhdpi并放入可绘制文件夹,以便可调整到所有屏幕尺寸
我有2000x1246图片
顶部图片256dp = 2000x1024像素
底部标签图片56dp = 2000x224像素
以下是source code
的完整示例答案 2 :(得分:1)
ListView
和GridView
未配备NestedScrolling
个功能。这需要使用CollapsingToolbarLayout
。
使其成功的最简单方法是将您的ListView
和GridView
更改为RecyclerViews
(RecyclerView
实施NestedScrollingChild
)。
答案 3 :(得分:1)
我已经实现了这一点,我将把我的代码与使用的库相结合 首先,这是布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/attraction_lay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f5f6f5">
<RelativeLayout
android:id="@+id/bar"
android:layout_width="match_parent"
android:layout_height="47dp">
<TextView
android:id="@+id/exp_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp"
android:text="See & do"
android:textColor="#1b7bba"
android:textSize="17sp" />
<RelativeLayout
android:id="@+id/relmenu"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true">
<ImageView
android:layout_width="17dp"
android:layout_height="14dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="17dp"
android:layout_marginLeft="8dp"
android:src="@drawable/menu_icon_blue" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/relsearch"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true">
<ImageView
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="17dp"
android:layout_marginRight="8dp"
android:src="@drawable/search_icon_blue" />
</RelativeLayout>
</RelativeLayout>
<View
android:id="@+id/div"
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_below="@+id/bar"
android:background="#1b7bba" />
<FrameLayout
android:id="@+id/layout_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/div">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:divider="@null"
android:focusable="false"
android:focusableInTouchMode="false"
android:listSelector="@android:color/transparent"
android:scrollbars="none" />
<FrameLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="290dp"
android:layout_marginTop="0dp"
android:orientation="vertical">
<FrameLayout
android:id="@+id/images_header"
android:layout_width="fill_parent"
android:layout_height="250dp"
android:layout_marginBottom="40dp">
<android.support.v4.view.ViewPager
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="250dp"
android:clickable="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:overScrollMode="never" />
<RelativeLayout
android:id="@+id/gallery_back"
android:layout_width="40dp"
android:layout_height="60dp"
android:layout_gravity="left|center_vertical">
<ImageView
android:layout_width="20dp"
android:layout_height="52dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:background="@drawable/arrow_back" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/gallery_next"
android:layout_width="40dp"
android:layout_height="60dp"
android:layout_gravity="right|center_vertical">
<ImageView
android:layout_width="20dp"
android:layout_height="52dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@drawable/arrow_next" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="-150dp"
android:layout_marginTop="170dp"
android:background="@drawable/horizontal_gradient" />
<TextView
android:id="@+id/pagenum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|bottom"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
android:text="3/15"
android:textColor="#FFF"
android:textSize="14sp" />
</FrameLayout>
<FrameLayout
android:id="@+id/header_text_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/min_height_textheader_materiallike"
android:layout_gravity="bottom"
android:background="#FFF">
<!--<TextView-->
<!--android:id="@+id/text_header"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_gravity="center_vertical"-->
<!--android:layout_marginLeft="70dp"-->
<!--android:text="ttttt"-->
<!--android:textColor="@android:color/white"-->
<!--android:textSize="18sp"-->
<!--android:textStyle="bold" />-->
<RelativeLayout
android:id="@+id/button_header"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginLeft="83dp"
android:layout_marginRight="83dp">
<RelativeLayout
android:id="@+id/photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="2.5">
<ImageView
android:layout_width="17dp"
android:layout_height="14dp"
android:layout_centerInParent="true"
android:background="@drawable/photo_blue_icon"
/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/video"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2.5">
<ImageView
android:layout_width="14dp"
android:layout_height="16dp"
android:layout_centerInParent="true"
android:background="@drawable/video_blue_icon" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/share"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2.5">
<ImageView
android:layout_width="15dp"
android:layout_height="20dp"
android:layout_centerInParent="true"
android:background="@drawable/share_blue_icon" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/fav"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2.5">
<ImageView
android:layout_width="20dp"
android:layout_height="19dp"
android:layout_centerInParent="true"
android:background="@drawable/fav_blue_icon" />
</RelativeLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="2px"
android:layout_alignParentBottom="true"
android:background="#d7d7d7" />
</RelativeLayout>
</FrameLayout>
</FrameLayout>
</FrameLayout>
在java代码中你应该添加这个
StikkyHeaderBuilder.ListViewBuilder.stickTo(mListView)
.setHeader(R.id.header, (ViewGroup) contentView)
.minHeightHeaderDim(R.dimen.min_height_textheader_materiallike)
.animator(new ParallaxStikkyAnimator())
.attatch_Acitivty(Attractions.this)
.castTo("Attractions")
.build();
这是SDWebImageCache使用的
但是我修改了这个库以便按我的意愿工作
修改是在stcikylistview构建器中添加方法以了解所使用的活动并传递一个委托进行滚动我使用了这个因为我在viewpager中为图像添加了模糊
她是我的修改
我将上传修改后的库版本 在这里你是library
答案 4 :(得分:0)
我也有这个问题。你需要使用RecyclerView。现在我明白你必须使用ListView和GridGiew,但你可以在RecyclerView中使用它。
例如,我将向您展示如何在RecyclerView中实现GridLayout。
在片段布局中(您希望实现GridView),添加以下XML
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/recyclerviewGRID"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
然后在你的片段java上,
在片段onCreateView上,定义RecyclerView,
RecyclerView rv = (RecyclerView) v.findViewById(R.id.recyclerviewGRID);
setupRecyclerView(rv);
创建方法setupRecyclerView,
private void setupRecyclerView(RecyclerView recyclerView) {
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new GridLayoutManager(recyclerView.getContext(), 2));
mAdapter = new AdapterGridView(getActivity().getApplicationContext(), mItems);
recyclerView.setAdapter(mAdapter);
}
您必须先将mAdapter定义为RecyclerView.Adapter
。然后为RecyclerView创建适配器。请注意,mItems是一个包含列表内容的ArrayList。
AdapterGridView.java
public class AdapterGridView extends RecyclerView.Adapter<AdapterGridView.ViewHolder> {
ArrayList<AdItem> mItems;
Context context, contxt;
public AdapterGridView(Context context, ArrayList<AdItem> mItems) {
this.context = context;
this.mItems = mItems;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
//attach your list item layout here, mine in this case is called list_item_grid_item
View v = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.list_item_grid_item, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
AdItem singleItem = mItems.get(i);
//attach data to your layout as the following manner
viewHolder.tvspecies.setText(singleItem.getName());
}
@Override
public int getItemCount() {
//return the number of list items
return mItems.size();
}
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
public ImageView imgThumbnail, avatar;
public TextView tvspecies, adIDLBL;
public ViewHolder(View itemView) {
super(itemView);
itemView.setClickable(true);
itemView.setOnClickListener(this);
//define your list item views, basically the stuff in list_item_grid_item
imgThumbnail = (ImageView)itemView.findViewById(R.id.img_thumbnail);
tvspecies = (TextView)itemView.findViewById(R.id.tv_species);
}
@Override
public void onClick(View v) {
//handle item click events
}
}
}