相关疑难解决方法(0)

android:RecyclerView里面的ScrollView(或视差)

我有一个包含2个cardview的片段,其中包含多个控件.

在第二张cardview 下面我有一个recyclerview,这很完美.

问题是recyclerview从屏幕底部开始,滚动recylcerview非常.

以前使用过listview,这使我保持适合你的内容,从而立即滚动屏幕,但recylclerview不能.

当我在recyclerview中滚动时,如何进行控制,就像视差效果一样?

编辑:更清楚,想象一个片段中的2张卡片,这些占据屏幕的80%,其中上面是一个带有100个项目列表的回收者视图,但是卷轴是如此微小......列表视图让我适应"内容"并立即滚动整个屏幕.

这是我的XML布局:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/svScroll"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <include
            android:id="@+id/cvCampos1"
            layout="@layout/ctlcabeceralibreta" />

        <include
            android:id="@+id/cvCampos2"
            layout="@layout/ctlcabeceralibreta2" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rvRegistros"
            android:layout_width="fill_parent"
            android:layout_height="1000dp"
            android:layout_below="@id/cvCampos2"
            android:scrollbars="vertical" />
    </RelativeLayout>

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

这是截图:

在此输入图像描述

android android-appcompat android-layout android-cardview android-recyclerview

6
推荐指数
1
解决办法
1万
查看次数

android嵌套的recyclerview

我试图显示嵌套的recyclerview但不显示子项.我想在所有子视图中显示不同的项目.我没有收到错误,但视图没有刷新.

这是我的代码可以任何一个帮助.

谢谢

    public class MainActivity extends ActionBarActivity {

    RecyclerView recyclerView;
    RootAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        adapter = new RootAdapter(this);
        recyclerView = (RecyclerView) findViewById(R.id.recyclerRoot);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(adapter);

    }

private class RootAdapter extends RecyclerView.Adapter<RootAdapter.RootViewHolder> {

        private final LayoutInflater inflater;
        String[] _items = new String[]{"ITEM 1", "ITEM 2", "ITEM 3", "ITEM 4"};
        public RootAdapter(Context context)
        {
            inflater = LayoutInflater.from(context);
        }

        @Override
        public RootViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
            View view = inflater.inflate(R.layout.root_row, viewGroup, false);
            RootViewHolder rvi = …
Run Code Online (Sandbox Code Playgroud)

android nested-lists android-recyclerview

6
推荐指数
1
解决办法
1万
查看次数

来自支持v.23.2.0的RecyclerView的dissapearence动画中的NullPointerException


在新的RecyclerView中,我们可以使用wrap_content高度(或宽度).所以谷歌修复了错误 - https://code.google.com/p/android/issues/detail?id=74772
但最终并非一切都很顺利.
从RecyclerView中删除项目时,我尝试使用消失的动画.所以我使用适配器的方法 - notifyItemRemoved(int)与任何参数和RecyclerView导致NullPointerException.

Xml代码:

...
    <RecyclerView
        android:id="@+id/RecyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:overScrollMode="always"/>
    ...
Run Code Online (Sandbox Code Playgroud)



日志:

E/AndroidRuntime: FATAL EXCEPTION: main
 java.lang.NullPointerException
     at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
     at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
     at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
     at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
     at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
     at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
     at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
     at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
     at android.view.View.layout(View.java:14015)
     at android.view.ViewGroup.layout(ViewGroup.java:4373)
     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
     at android.view.View.layout(View.java:14015)
     at android.view.ViewGroup.layout(ViewGroup.java:4373)
     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1021)
     at android.view.View.layout(View.java:14015)
     at android.view.ViewGroup.layout(ViewGroup.java:4373)
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
     at android.view.View.layout(View.java:14015)
     at android.view.ViewGroup.layout(ViewGroup.java:4373)
     at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
     at android.view.View.layout(View.java:14015)
     at android.view.ViewGroup.layout(ViewGroup.java:4373)
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
     at android.view.View.layout(View.java:14015) …
Run Code Online (Sandbox Code Playgroud)

java android android-layout recycler-adapter android-recyclerview

6
推荐指数
2
解决办法
4041
查看次数

渲染前测量多行TextView的高度

我已经尝试到了什么:

  1. 呼唤 measure()

    tv.measure(0, 0);
    int height = tv.getMeasuredHeight();
    
    Run Code Online (Sandbox Code Playgroud)
  2. measure()以指定的尺寸/模式进行呼叫

    int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(99999, View.MeasureSpec.AT_MOST);
    int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
    tv.measure(widthMeasureSpec, heightMeasureSpec);
    int height = tv.getMeasuredHeight();
    
    Run Code Online (Sandbox Code Playgroud)
  3. 呼唤 getTextBounds()

    Rect bounds = new Rect();
    tv.getPaint().getTextBounds(tv.getText().toString(), 0, tv.getText().length(), bounds);
    int height = bounds.height();
    
    Run Code Online (Sandbox Code Playgroud)
  4. 先打电话measure()再打电话getTextBounds()

  5. 呼唤 getLineCount() * getLineHeight()

似乎没有任何工作。它们都返回不正确的值(容器视图的高度不正确-太小或太大)

关于如何计算这个简单事情的想法?

java android textview

5
推荐指数
2
解决办法
2446
查看次数

使Recyclerview固定高度和可滚动

解决了检查下面的答案......

所以我想为我的Android应用程序创建一个评论功能,我想在recyclerview中显示评论,然后在recyclerview下面有一个按钮和textview来添加评论.我想让recyclerview具有一定的高度,如果有很多评论,可以滚动它,因为我不希望用户必须向下滚动屏幕才能找到添加按钮.

我无法让它工作,所以我想知道是否有其他人有这个问题.

我有所有适配器和所有设置,我只是在使用recyclerview时遇到问题.

谢谢.

我不清楚我想要完成什么.我正在尝试创建一个cardview,它将显示所有评论和添加新评论的能力.recyclerview将占据高度的大约80%,然后最后20%用于edittext和按钮.

我的XML(滚动到最后的cardview,其中包含recyclerview)

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/scrollview">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ProfilePageActivity"
    >

    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/profilepagetoolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        android:minHeight="?attr/actionBarSize">

    </android.support.v7.widget.Toolbar>
    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:layout_marginTop="35dp"
        android:layout_below="@+id/profilepagetoolbar"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:id="@+id/aboutCard">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:gravity="center_vertical"
            android:orientation="vertical"
            android:layout_alignTop="@+id/aboutCard"
            android:focusable="true"
            android:focusableInTouchMode="true">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="4dp"
                android:layout_marginEnd="10dp"
                android:layout_marginStart="10dp"
                android:layout_marginTop="-60dp"
                android:gravity="center_vertical"
                android:maxLines="1"
                android:textColor="@color/text"
                android:textSize="20sp"
                android:text="ABOUT" />

            <View
                android:layout_width="match_parent"
                android:layout_height="1px"
                android:background="@color/dividers" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:paddingTop="10dp">

                <ImageView
                    android:id="@+id/nameicon"
                    android:layout_width="24dp"
                    android:layout_height="24dp"
                    android:layout_margin="8dp"
                    android:transitionName="appIcon"
                    android:background="@drawable/ic_account_circle_black_24dp"/> …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

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

Android 中的垂直和水平滚动列表或网格

我在一个 android 应用程序中工作,我需要构建一个垂直滚动列表,每个项目也是一个水平列表。然而,每个项目都有其独立的水平滚动。甚至有些项目不能有。

我一直在寻找解决方案,但我只看到垂直或水平列表。或者像 TwoWayView 中的网格。

我正在寻找类似于下图中的组合:

垂直和水平滚动列表和网格

这在Android中可能吗?因为我的数据是一个数组数组。

先感谢您。

android horizontal-scrolling vertical-scrolling android-recyclerview

5
推荐指数
1
解决办法
6929
查看次数

父级RecyclerView内的嵌套/子级RecyclerView,自定义LinearLayoutManager无法正常工作

我试着按照这个如何使用自定义的SO答案LinearLayoutManager,但我的嵌套RecyclerView根本没有显示.

父活动中的RecyclerView:

        RecyclerView detailsRecyclerView = (RecyclerView) dialog.findViewById(R.id.category_dish_dialog_recycler_view);
        detailsRecyclerView.setHasFixedSize(true);

        LinearLayoutManager layoutManager = new LinearLayoutManager(CategoryActivity.this);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);

        detailsRecyclerView.setLayoutManager(layoutManager);

        DishDetailsAdapter detailsAdapter = new DishDetailsAdapter(dish.getDishOptions(), CategoryActivity.this);
        detailsRecyclerView.setAdapter(detailsAdapter);

        detailsAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

父回收器适配器视图:

请注意,子/嵌套的RecyclerView在里面OptionsViewHolder:

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

    private List<DishOption> options;
    private Context context;
    private SharedData sharedData = SharedData.getInstance();


    public DishDetailsAdapter(List<DishOption> detailsList, Context parentContext) {
        options = detailsList;
        context = parentContext;
        sharedData.setMainFont(context);
        sharedData.setSecondaryFont(context);
    }


    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        LayoutInflater inflater = LayoutInflater.from(parent.getContext());

        View view …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-adapter android-activity android-recyclerview

5
推荐指数
0
解决办法
2282
查看次数

RecyclerView面临小问题

RecyclerView在我的程序中使用,面对一些小问题,我相信你们中的一些人已经面对并解决了所有这些问题.

  1. Separator color:使用DividerItemDecoration.java显示Items之间的分隔符,但如果我想更改分隔线颜色(如:默认为白色),则不知道在哪里进行更改

  2. Clickable Row:点击仅在我连续点击文本时有效,但我想允许用户点击链接后的任何地方(如:listview)

  3. Wrap RecyclerView :我在recyclerview中只有两个记录,但它消耗全高(我想根据RecyclerView中的记录包装它,如:listview)

  4. Ripple Effect:每当我点击RecyclerView中的任何项目时都没有获得RippleEffect,而当我点击列表项目获得Ripple效果时

  5. RecyclerView Item Animation:当我点击RecyclerView中的任何项目时,如何实现动画效果

fragment_main.xml: -

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

adapter_main.xml: -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textTitle"
        style="@style/AppTheme.ListTextView"
        />

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

styles.xml: -

<style name="AppTheme.ListTextView" parent="android:Widget.Material.TextView">
        <item name="android:gravity">left</item>
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>            
        <item name="android:padding">10dp</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

btn_rounded.xml: -

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#008f8471"/>
    <stroke android:width="2dp" android:color="#ffffff" />
    <corners android:radius="10dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

MainAdatper.java:-

@Override
public …
Run Code Online (Sandbox Code Playgroud)

android android-5.0-lollipop recycler-adapter android-recyclerview

4
推荐指数
1
解决办法
1891
查看次数