1

I'm trying to place some clickable CardViews in a NestedScrollView (using the Material lib 22.2.1).

Most of my code seem to run without any issue (Toolbar gets collapsed, GUI is shown correctly, etc.). But when the layout gets scrolled (aka: the Toolbar gets collapsed), I have to touch 1x one clickable view, to "re-enable" the clickable-behaviour of the layout. Maybe it's unclear what I mean, so here a scenario:

  1. app starts
  2. fragment gets loaded
  3. clicking a card -> onClick is triggered -> works fine
  4. scrolling downwards (Toolbar gets collapsed now) -> works fine
  5. clicking a card -> onClick isn't fired anymore :-/
  6. now the layout works fine again - until the layout gets scrolled again

If anybody know what's causing this one, please let me know.

Here is some code (some parts are from a tutorial by Chris Banes)

 <android.support.design.widget.CoordinatorLayout
            android:id="@+id/rootLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <android.support.design.widget.AppBarLayout
                android:id="@+id/appbar"
                android:layout_width="match_parent"
                android:layout_height="@dimen/app_bar_height">

            <android.support.design.widget.CollapsingToolbarLayout
                    android:id="@+id/collapsingToolbarLayout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    app:contentScrim="?attr/colorPrimary"
                    app:expandedTitleMarginStart="@dimen/expanded_toolbar_title_margin_start"
                    app:layout_scrollFlags="scroll|exitUntilCollapsed"
                    app:layout_behavior="@string/appbar_scrolling_view_behavior">

                <ImageView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:scaleType="centerCrop"
                        android:src="@color/purple_5"
                        app:layout_collapseMode="parallax"
                        app:layout_collapseParallaxMultiplier="0.7"/>

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

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

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

        <android.support.v4.widget.NestedScrollView
                android:id="@+id/frame"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_behavior="@string/appbar_scrolling_view_behavior"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                xmlns:android="http://schemas.android.com/apk/res/android"/>

        <android.support.design.widget.FloatingActionButton
                android:id="@+id/fab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/fab_margin"
                android:clickable="true"
                android:src="@drawable/ic_launcher"
                app:layout_anchor="@+id/appbar"
                app:layout_anchorGravity="bottom|right|end"
                />

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

the fragments content

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

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingTop="24dp"
        xmlns:android="http://schemas.android.com/apk/res/android">

    <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/card_margin"
            android:clickable="true">

        <LinearLayout
                style="@style/Widget.CardContent"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:clickable="false">

            <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Info"
                    android:textAppearance="@style/TextAppearance.AppCompat.Title"/>

            <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/cheese_ipsum"/>

        </LinearLayout>

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="@dimen/card_margin"
            android:layout_marginLeft="@dimen/card_margin"
            android:layout_marginRight="@dimen/card_margin"
            android:clickable="true">

        <LinearLayout
                style="@style/Widget.CardContent"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:clickable="true">

            <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Friends"
                    android:textAppearance="@style/TextAppearance.AppCompat.Title"/>

            <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/cheese_ipsum"/>

        </LinearLayout>

    </android.support.v7.widget.CardView>

    <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="@dimen/card_margin"
            android:layout_marginLeft="@dimen/card_margin"
            android:layout_marginRight="@dimen/card_margin"
            android:clickable="true"
            android:foreground="@drawable/card_foreground"
            android:id="@+id/testCard">

        <LinearLayout
                style="@style/Widget.CardContent"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

            <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Related"
                    android:textAppearance="@style/TextAppearance.AppCompat.Title"/>

            <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/cheese_ipsum"/>

        </LinearLayout>

    </android.support.v7.widget.CardView>

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


</LinearLayout>

setting the fragment (the 'content'):

private void makeFragmentTransaction(Fragment fragment) {
        android.support.v4.app.FragmentTransaction fragmentTransaction =
                getSupportFragmentManager().beginTransaction();

        fragmentTransaction.replace(R.id.frame, fragment);
        fragmentTransaction.commit();
    }

Thanks in advance.

Martin Pfeffer
  • 12,471
  • 9
  • 59
  • 68
  • Duplicate: http://stackoverflow.com/questions/31829976/onclick-method-not-working-properly-after-nestedscrollview-scrolled – GMan Aug 27 '15 at 13:34

0 Answers0