2017-05-15 3 views
0

Ich habe eine LinearLayout mit einer verschachtelten RecyclerView zeigt eine Liste von Elementen. Ich möchte ein Popup öffnen, wenn auf RecyclerView geklickt wird (entweder eines der Elemente oder der Hintergrund weißen Bereich), aber die üblichen setOnClickListener funktioniert nicht.Recyclerview nicht anklickbar

Natürlich kann ich jedem Objekt einen Klick-Listener zuweisen, aber der weiße Bereich zwischen ihnen bleibt nicht anklickbar.

Gibt es eine Möglichkeit, den gesamten Bereich RecyclerView anklickbar zu machen?

EDIT: Ich habe einige Beispielcode hinzugefügt. Ich möchte das gesamte Layout klickbar machen, um ein Popup zu öffnen, aber während sich die ersten drei Ansichten richtig verhalten, tut RecyclerView das nicht.

<LinearLayout 
    android:id="@+id/layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
    <View 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/spacing_half" 
     android:background="@color/color_item_margin_divider"/> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/fragment_tags_title" 
     style="@style/ItemFragmentHeader"/> 
    <View 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/spacing_line" 
     android:background="@color/color_line_divider"/> 
    <RecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/spacing_half"/> 
</LinearLayout> 
+0

Sorry, aber ... wie kann diese Hilfe mit meiner Frage? – Alessandro

+0

Sie sollten Ihren Code veröffentlichen. Überprüfen Sie auch Ihre übergeordneten Ansichten, da sie Klickereignisse erfassen können. Sie können es deaktivieren, indem Sie 'android: clickable =" true "' zum XML des Elternteils hinzufügen - das kann helfen. – C0D3LIC1OU5

+0

Bitte poste etwas Code und wir helfen dir –

Antwort

0

onClickListener im viewHolder hinzufügen. Im Folgenden ist ein Ausschnitt aus meinem Projekt, wo ich Listener

public class MyViewHolder extends RecyclerView.ViewHolder { 
     public ImageView shotThumbnail; 
     public MyViewHolder(View view) { 
        super(view); 
        shotThumbnail = (ImageView) view.findViewById(R.id.shotThumbnail); 
        shotThumbnail.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 
          //Put here stuff that you want the onclickListener should do 

         } 
        }); 

Überprüfen Sie, ob dieser Link hilft umgesetzt hatte: Detect click on RecyclerView outside of items

+0

Wie ich in der Frage gesagt habe, muss der gesamte RecyclerView-Bereich anklickbar sein, nicht nur die einzelnen Elemente, sondern sogar ihre Ränder ... – Alessandro

+0

Teilen Sie ein Bild der es und wahrscheinlich markieren Sie die Fläche, die Sie wollen anklickbar machen? – Panda2109

+0

Die gesamte von RecyclerView belegte Fläche: padding + items + ihre Ränder ... – Alessandro