滚动到完整视图,其中包含回收器视图
Giving scroll to full view with recycler view inside it
我想实现一个屏幕,其中我在顶部和下方都有一个布局,我有一个回收站视图,如下所示:
<RelativeLayout
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"
xmlns:fab="http://schemas.android.com/apk/res-auto"
tools:context="com.app.InstHomeDir.Fragments.PendingDocument"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/main_bg"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="15dp"
>
<android.support.v7.widget.CardView
android:background="@color/white"
app:cardElevation="2dp"
app:cardCornerRadius="2dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.app.InstHomeDir.Util.Roboto_Edit_Text_Bold
android:textColor="@color/bl2d2d2d"
android:padding="5dp"
android:text="DOCUMENT LIST"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.app.InstHomeDir.Util.Roboto_EditText
android:padding="5dp"
android:textColor="#6f6f6f"
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:textSize="12sp"
android:text="@string/Pending_Doc"
android:layout_height="wrap_content"/>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_penddoc"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_anchor="@id/toolbar_layout"
app:layout_anchorGravity="bottom|center"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
</android.support.v7.widget.RecyclerView>
</LinearLayout>
</RelativeLayout>
现在我想为整个视图提供滚动视图,但是当我这样做时屏幕的滚动不流畅,因为屏幕上有两个滚动条,我该如何解决这个问题?谁能帮帮我?
通常嵌套多个 onScrolls 属性不是好的做法。
您应该做的是,向您的回收站添加一个 header 并显示您想要显示在顶部的布局。为此,您必须在适配器中添加以下代码(没有像 listView listView.addHeader())
中那样的方法
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_ITEM) {
//inflate your layout and pass it to view holder
return new VHItem(null);
} else if (viewType == TYPE_HEADER) {
//inflate your layout and pass it to view holder
return new VHHeader(null);
}
throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly");
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof VHItem) {
String dataItem = getItem(position);
//cast holder to VHItem and set data
} else if (holder instanceof VHHeader) {
//cast holder to VHHeader and set data for header.
}
}
@Override
public int getItemViewType(int position) {
if (isPositionHeader(position))
return TYPE_HEADER;
return TYPE_ITEM;
}
private boolean isPositionHeader(int position) {
return position == 0;
}
private String getItem(int position) {
return data[position - 1];
}
class VHItem extends RecyclerView.ViewHolder {
public VHItem(View itemView) {
super(itemView);
}
}
class VHHeader extends RecyclerView.ViewHolder {
public VHHeader(View itemView) {
super(itemView);
}
}
还有图书馆like this
添加页眉和页脚是一种方法,但我发现了一种更容易实现的视图。
将整个视图放在滚动视图中。现在这会使滚动有点慢而且看起来不好看,所以要克服这个问题,请使用以下代码:
layoutManager = new LinearLayoutManager(getActivity()){
@Override
public boolean canScrollVertically() {
return false;
}
};
现在的问题是,当我将整个视图添加到滚动视图中时,同一视图中有 2 个滚动条。所以我们面临这个问题。现在,如果我们删除其中之一的滚动 属性,那么它会再次顺利运行。
所以我们删除了回收站视图的滚动属性,因为它是子视图。
很有魅力。
我想实现一个屏幕,其中我在顶部和下方都有一个布局,我有一个回收站视图,如下所示:
<RelativeLayout
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"
xmlns:fab="http://schemas.android.com/apk/res-auto"
tools:context="com.app.InstHomeDir.Fragments.PendingDocument"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/main_bg"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="15dp"
>
<android.support.v7.widget.CardView
android:background="@color/white"
app:cardElevation="2dp"
app:cardCornerRadius="2dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.app.InstHomeDir.Util.Roboto_Edit_Text_Bold
android:textColor="@color/bl2d2d2d"
android:padding="5dp"
android:text="DOCUMENT LIST"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.app.InstHomeDir.Util.Roboto_EditText
android:padding="5dp"
android:textColor="#6f6f6f"
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:textSize="12sp"
android:text="@string/Pending_Doc"
android:layout_height="wrap_content"/>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_penddoc"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_anchor="@id/toolbar_layout"
app:layout_anchorGravity="bottom|center"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
</android.support.v7.widget.RecyclerView>
</LinearLayout>
</RelativeLayout>
现在我想为整个视图提供滚动视图,但是当我这样做时屏幕的滚动不流畅,因为屏幕上有两个滚动条,我该如何解决这个问题?谁能帮帮我?
通常嵌套多个 onScrolls 属性不是好的做法。
您应该做的是,向您的回收站添加一个 header 并显示您想要显示在顶部的布局。为此,您必须在适配器中添加以下代码(没有像 listView listView.addHeader())
中那样的方法@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_ITEM) {
//inflate your layout and pass it to view holder
return new VHItem(null);
} else if (viewType == TYPE_HEADER) {
//inflate your layout and pass it to view holder
return new VHHeader(null);
}
throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly");
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof VHItem) {
String dataItem = getItem(position);
//cast holder to VHItem and set data
} else if (holder instanceof VHHeader) {
//cast holder to VHHeader and set data for header.
}
}
@Override
public int getItemViewType(int position) {
if (isPositionHeader(position))
return TYPE_HEADER;
return TYPE_ITEM;
}
private boolean isPositionHeader(int position) {
return position == 0;
}
private String getItem(int position) {
return data[position - 1];
}
class VHItem extends RecyclerView.ViewHolder {
public VHItem(View itemView) {
super(itemView);
}
}
class VHHeader extends RecyclerView.ViewHolder {
public VHHeader(View itemView) {
super(itemView);
}
}
还有图书馆like this
添加页眉和页脚是一种方法,但我发现了一种更容易实现的视图。 将整个视图放在滚动视图中。现在这会使滚动有点慢而且看起来不好看,所以要克服这个问题,请使用以下代码:
layoutManager = new LinearLayoutManager(getActivity()){
@Override
public boolean canScrollVertically() {
return false;
}
};
现在的问题是,当我将整个视图添加到滚动视图中时,同一视图中有 2 个滚动条。所以我们面临这个问题。现在,如果我们删除其中之一的滚动 属性,那么它会再次顺利运行。 所以我们删除了回收站视图的滚动属性,因为它是子视图。
很有魅力。