2016-05-30 12 views
1

Ich habe ein listView mit parallax effect mit einem sticky listview in android implementiert, ich habe den folgenden link für die referenz verwendet und habe dieses ding erfolgreich implementiert, aber ich stehe vor einem Ausgabe auf die Hintergrundbilder über dem listheader klicken, kann jemand mir helfen, es herauszufinden und kann ich die Click-Ereignisse von childviews von Listitemaktivieren click event auf parallax ListView mit sticky header in android

ref Link zu finden: http://javatechig.com/android/listview-header-parallax-with-sticky-view-in-android

ich kann nicht schreiben meinen Code als zu groß zum Posten, aber wenn es noch benötigt wird, kann ich ein paar Teile posten.

+0

Ok, aber was ist falsch an diesem Klick? –

+0

@ ArturSzymański- Ich kann nicht wegen des Platzes auf Unteransichten klicken View on, Haben Sie durch den Link gegangen? Wird Idee bekommen.ImageView kann nicht anklickbar sein. –

+0

können Sie Ihren Code, wo Sie Steuerelemente registrieren und möchten Click-Ereignis davon behandeln? @JigarMakwana –

Antwort

3

Ich sah Referenz Link @Jigar Makwana geschrieben hinzuzufügen. Sie werden kein Klickereignis auf imageView bekommen, weil in imageView "Space control" innerhalb des Layouts der Listenansicht Header verwendet wird, und darunter heldimageView (ImageView). Wenn Sie also auf den Header-Teil klicken, der nicht imageView ist, ist das Space-Widget. Auch wenn die Raumsteuerung kein Klickereignis bekommen kann, müssen Sie einfach View verwenden oder das imageView im Listenansicht Headerlayout anstelle von Leerzeichen verwenden. Aber es ist kein richtiger Weg, um dieses Design & Funktionalität zu implementieren. Wenn Sie es richtig machen wollen, folgen Sie den untenstehenden Links.

Ihr Referenzlink ist kein gutes Beispiel für Parallex mit Sticky-Layout. Proper Beispiel sind Handling Scrolls with CoordinatorLayout & Collapsing Toolbar Layout

Darin können Sie CoordinatorLayout innerhalb Imageview Sie Ereignis klicken möchten verwenden zu handhaben und ein Layout Ihrer HeadingText zu machen und es als Listview hinzufügen header.That es ist und funktioniert perfekt und Sie werden nie Fehler sehen nochmal.

-Code ist einfach:

<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: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="wrap_content" 
     android:background="@color/transparent" 
     android:fitsSystemWindows="true" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:elevation="0dp"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar_transparent" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:fitsSystemWindows="true" 
      android:minHeight="?attr/actionBarSize" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginEnd="64dp" 
      app:expandedTitleMarginStart="48dp" 
      app:expandedTitleTextAppearance="@android:color/transparent" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <RelativeLayout 
       android:id="@+id/relativeLayout_main_profile" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="7dp" 
       android:animateLayoutChanges="true" 
       app:layout_collapseParallaxMultiplier="0.7" 
       app:layout_collapseMode="parallax" 
       tools:context="com.mazkara.user.activity.ProfileActivity"> 
       <ImageView 
       android:id="@+id/heroImageView" 
       android:layout_width="match_parent" 
       android:layout_height="250dp" 
       android:background="@drawable/wallpaper" 
       android:scaleType="fitCenter" /> 
      </RelativeLayout> 
// only if you use toolbar then specify here your toolbar start 
      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar_main_transparent" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="@color/transparent" 
       app:layout_collapseMode="pin" 
       app:layout_scrollFlags="scroll|enterAlways" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
       app:titleTextAppearance="@color/white"> 
      </android.support.v7.widget.Toolbar> //toolbar end 
     </android.support.design.widget.CollapsingToolbarLayout> 
     <TextView 
     android:id="@+id/stickyView" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:background="#222" 
     android:gravity="center_vertical" 
     android:paddingLeft="10dp" 
     android:text="Heading1" 
     android:textColor="#fff" 
     android:textSize="20sp" 
     android:layout_gravity="bottom" 
     app:layout_collapseMode="pin" 
     android:textStyle="bold" /> 

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


    <android.support.v7.widget.RecyclerView 
    android:id="@+id/design_bottom_sheet" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:layout_behavior="@string/bottom_sheet_behavior"> 
</android.support.design.widget.CoordinatorLayout> 

Das ist es.

+0

danke anant, So ist es nicht möglich, in meiner jetzigen Struktur zu tun? –

+0

Ja @JigarMakwana Ich denke, diese Antwort lösen Ihr Problem so, Bitte akzeptieren Sie meine Antwort. –

+0

@ Anant-in der Tat konnte ich nicht lösen, aber Ihre Referenz ist hilfreich –

0

diesen Code nach listView.setAdapter(adapter);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Toast.makeText(MainActivity.this, "item " + position + 1 + " clicked!", Toast.LENGTH_LONG).show(); 
     } 
    }); 
0

Ich benutze den gleichen Code wie Sie. Sie sollten Touch-Ereignis an die Kopfzeile übergeben Bild

der HeldImageView ist das Bild hat Parallax-Effekt.