相关疑难解决方法(0)

ScrollView中的RecyclerView无法正常工作

我正在尝试在相同的布局中实现包含RecyclerView和ScrollView的布局.

布局模板:

<RelativeLayout>
    <ScrollView android:id="@+id/myScrollView">
       <unrelated data>...</unrealated data>

           <android.support.v7.widget.RecyclerView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/my_recycler_view"
            />
    </ScrollView>


</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

问题:我可以滚动直到最后一个元素 ScrollView

我试过的事情:

  1. 里面的卡片视图ScrollView(现在ScrollView包含RecyclerView) - 可以看到卡片直到RecyclerView
  2. 最初的想法是实现这个viewGroup,RecyclerView而不是ScrollView其中一个视图类型是,CardView但我得到了与完全相同的结果ScrollView

android android-layout android-scrollview android-cardview android-recyclerview

240
推荐指数
13
解决办法
17万
查看次数

如何使WRAP_CONTENT在RecyclerView上运行

我有一个DialogFragment包含RecyclerView(卡片列表).

其中RecyclerView一个或多个CardViews可以具有任何高度.

我想DialogFragment根据CardViews其中包含的内容给出正确的高度.

通常情况下,这将是简单的,我会成立wrap_contentRecyclerView这个样子.

<android.support.v7.widget.RecyclerView ...
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"   
    android:clickable="true"   
    android:scrollbars="vertical" >

</android.support.v7.widget.RecyclerView>
Run Code Online (Sandbox Code Playgroud)

因为我使用的RecyclerView这个不起作用,请看:

https://issuetracker.google.com/issues/37001674

嵌套的Recycler视图高度不会包装其内容

在这两个页面上,人们建议扩展LinearLayoutManager和覆盖onMeasure()

我首先使用了第一个链接中提供的LayoutManager:

public static class WrappingLayoutManager extends LinearLayoutManager {

        public WrappingLayoutManager(Context context) {
            super(context);
        }

        private int[] mMeasuredDimension = new int[2];

        @Override
        public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state,
                              int widthSpec, int heightSpec) {
            final int widthMode = View.MeasureSpec.getMode(widthSpec);
            final …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments android-studio android-recyclerview

176
推荐指数
8
解决办法
12万
查看次数

没有显示的Recycler视图

我一直在制作一个应用程序,它在导航抽屉中使用回收站视图,但回收器视图的内容是如何显示的.视图肯定是他们,因为我可以看到滚动阴影.我不确定我是否做错了,因为应用程序在运行时不会崩溃.

导航抽屉片段:

public class NavigationDrawerFragment extends android.support.v4.app.Fragment {

    public static final String PREF_FILE_NAME = "testPref";
    public static final String KEY_USER_LEARNED_DRAWER = "user_learned_drawer";
    private RecyclerView mRecyclerView;
    private ActionBarDrawerToggle mDrawerToggle;
    private DrawerLayout mDrawerLayout;
    private View containerView;
    private Boolean mUserLearnedDrawer;
    private Boolean mFromSavedInstanceState;
    private DrawerAdapter adapter;

    public NavigationDrawerFragment() {
        mFromSavedInstanceState = false;
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mUserLearnedDrawer = Boolean.valueOf(readFromPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, "false"));
        if (savedInstanceState != null){
            mFromSavedInstanceState = true;
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-navigation

24
推荐指数
4
解决办法
3万
查看次数

在NestedScrollView中使用RecyclerView为所有项调用onBindView

我有两个RecyclerViews垂直放置在一个LinearLayout.我需要让它们都可以滚动,这就是我放入LinearLayout内部的原因NestedScrollView

这是我的布局文件.

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="none">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/featured_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/all_topic_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

另外,我在Java代码中禁用嵌套滚动.

disableNestedScrolling(findViewById(R.id.all_topic_list));
disableNestedScrolling(findViewById(R.id.featured_list));
Run Code Online (Sandbox Code Playgroud)

我的RecylerView库版本是26.1.0

这完全正常,但随后onBindViewHolder调用列表中的所有项目的方法.理想情况下,只应为列表中的可见项调用它.

我认为这个问题正在发生的事情,因为我给wrap_contentRecyclerView.关于这个问题的很多答案都表明这个问题在v23.2.1中得到了解决,但我已经在使用v26.1.0了.如何解决这个问题?

android android-recyclerview

17
推荐指数
1
解决办法
2108
查看次数

Android:如何在CardView中插入RecyclerView?

我说的活动必须展现出RecyclerView通过填充CardViews作为项目.我的目标是在每个CardView中显示一个RecyclerView.

这是我的Activity的基本xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ConjActivity" >

    <android.support.v7.widget.RecyclerView
        android:id="@+id/conjCardList"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="false" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是我的CardView的RecyclerView的布局:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/card_analysis"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="@dimen/activity_vertical_margin"
    android:layout_marginBottom="@dimen/activity_vertical_margin" 
    android:layout_marginLeft="@dimen/activity_horizontal_margin"
    android:layout_marginRight="@dimen/activity_horizontal_margin"
    android:padding="5dp"
    card_view:cardCornerRadius="5dp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <android.support.v7.widget.RecyclerView
            android:id="@+id/item_mode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="5dp"
            android:paddingLeft="@dimen/activity_horizontal_margin" >

        </android.support.v7.widget.RecyclerView>
    </LinearLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)

所以,我大胆地通过实现两个RecyclerView.Adapters来实现我的第一次尝试,一个用于(让我们称之为)"主"RecyclerView,一个用于每个CardView中的单个:

以下是两段代码:

"Main"RecyclerView(带ViewHolders):

public class ConjCardAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{

    private static Context context;
    private LinearLayoutManager llm;
    private static ConjFormAdapter formAdapt;
    private ArrayList<String> adapterList;
    private …
Run Code Online (Sandbox Code Playgroud)

android android-viewholder android-cardview recycler-adapter android-recyclerview

15
推荐指数
2
解决办法
2万
查看次数

如何禁用回收器视图滚动,以便它侦听Scrollview布局?

我在ScrollView中有一个回收站视图.我想禁用回收器视图滚动,以便它侦听其父布局,一个ScrollView!

android android-scrollview android-recyclerview

14
推荐指数
2
解决办法
3万
查看次数

在RecyclerView之后,使空视图占用剩余空间?

我正在尝试制作一个有色的空视图占用RecyclerView之后的剩余空间.我看过不同的StackOverflow解决方案,但没有任何效果.基本上我想要这样的东西:

________________________
|                       |
|                       |
|                       |
|    Recycler view      |
|                       |
|  -------------------  |
|    colored empty view |
|                       |
|                       |
|                       |
|                       |
|                       |
_________________________

It should shrink as the RecyclerView grows. 

________________________
|                       |
|                       |
|                       |
|    Recycler view      |
|                       |
|                       |
|                       |
|                       |
|                       |
|  -------------------  |
|    colored empty view |
|                       |
|                       |
_________________________
Run Code Online (Sandbox Code Playgroud)

但是,如果RecyclerView超过一个屏幕的价值,则应该没有空视图.这是我到目前为止所拥有的:

 <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-xml

10
推荐指数
1
解决办法
6875
查看次数

RecyclerView重力

我有一个recylcler视图,但似乎没有实现setGravity方法.

我的列表是水平对齐的,但我需要它居中.我怎么做?

fragment_my_zone_item_controlled.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/dark_grey">

    <FrameLayout
        android:id="@+id/fragment_my_zone_item_controlled_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/fragment_my_zone_item_controlled_tabs"
        android:layout_marginBottom="12dp"
        android:layout_marginTop="12dp" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/fragment_my_zone_item_controlled_tabs"
        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:background="@color/action_bar_color"
        android:scrollbars="none" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

这是它的外观

这就是它的外观,我需要它的中心

感谢你们

android android-recyclerview

9
推荐指数
1
解决办法
7176
查看次数

多可扩展回收器视图

我尝试实现我自己的多可扩展 RecyclerView 它适用于一个子项,但是当我想要子子项时,视图显示但我需要多次单击它。层次结构示例:

Title1
  SubTitle1
  SubTitle2
  SubTitle3
    SubSubTitle1
    SubSubTitle2
Title2
...
Run Code Online (Sandbox Code Playgroud)

编辑:问题仅在 SubTitle 上显示 SubSub'sItem。我想我需要通知父适配器我的视图改变了,但我不工作。

为此,我将 RecyclerView 与 itemLayout 一起使用,它们也包含一个 RecyclerView,当我单击项目时,我将适配器设置为关闭子 RecyclerView。我使用我在这里找到的自定义 LinearLayoutManager /sf/answers/2048316721/

我的 onBindViewHolder :

@Override
public void onBindViewHolder(final DrawerViewHolder holder, final int position) {
    if (holder.type == TYPE_EXPANDABLE_ITEM) {
        final ItemDrawer item;
        if (header) {
            item = itemDrawers.get(position - 1);
        } else {
            item = itemDrawers.get(position);
        }
        holder.textView.setText(item.getTitle());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (item.isOpen()) {
                    item.setOpen(false);
                    holder.recyclerView_child.setVisibility(View.GONE);
                    notifyItemChanged(position);
                } else { …
Run Code Online (Sandbox Code Playgroud)

android expandable android-linearlayout android-recyclerview

7
推荐指数
1
解决办法
2904
查看次数

嵌套的recylerview滞后,而前几个滚动,然后顺利滚动?

我正在使用嵌套的RecyclerView.在垂直RecyclerView内的手段我有多个水平回收视图

我将适配器附加到父RecyclerView的onBindViewHolder方法内的水平recylerviews,如下所示.

@Override
public void onBindViewHolder(final MainViewHolder holder, final int position) {
    switch (holder.getItemViewType()) {
        case TYPE_PRODUCT:
            ((ListHolderProduct) holder).itemTitle.setText(browseCategoryHomePageItems.get(position).displayName.toUpperCase());
            ((ListHolderProduct) holder).recyclerView.setAdapter(new CarouselProductsRecyclerAdapter(context
                    , browseCategoryHomePageItems.get(position).products
                    , R.layout.activity_categoryhome_products_grid_item
                    , nestedRecyclerItemClickedListener
                    , position));
            break;
        case TYPE_DEAL:
            ((ListHolderDeal) holder).itemTitle.setText(browseCategoryHomePageItems.get(position).displayName.toUpperCase());
            ((ListHolderDeal) holder).recyclerView.setAdapter(new CarouselDealsRecyclerAdapter(context
                    , browseCategoryHomePageItems.get(position).dealItems
                    , R.layout.activity_categoryhome_deals_grid_item
                    , nestedRecyclerItemClickedListener
                    , position));
            break;
            //few more types like this
    }
}
Run Code Online (Sandbox Code Playgroud)

现在每当我滚动页面时,由于我将适配器连接到OnBindViewHolder上的水平RecyclerView,所以它有点滞后

并且可以有N个TYPE_PRODUCT或任何类型的水平列表.意味着可以存在多个相同类型的水平列表.

知道如何优化这个东西并提高滚动速度.

它是滞后的,因为之前每次为列表调用setAdapter.

更新我正在扩展LinearLayoutManager,并在我设置extraLayout空间已修复我的问题但我不知道这是正确的方式我是设置额外的空间如下.

 layoutManager.setExtraLayoutSpace(2 * this.getResources().getDisplayMetrics().heightPixels);
Run Code Online (Sandbox Code Playgroud)

而follwoing是自定义布局管理器类

public class PreCachingLayoutManager extends LinearLayoutManager {
private static final int DEFAULT_EXTRA_LAYOUT_SPACE = 600;
private int extraLayoutSpace = …
Run Code Online (Sandbox Code Playgroud)

performance android adapter android-viewholder android-recyclerview

7
推荐指数
2
解决办法
3249
查看次数