RecyclerView est pratique pour afficher une liste, mais si vous la laissez par défaut, vous ne pourrez pas déclencher un événement lorsque vous touchez la marge. J'ai cherché une implémentation pour fermer le clavier logiciel en touchant la marge de RecyclerView, donc j'aimerais la partager.
Premier à RecyclerView
android:touchscreenBlocksFocus="true"
Sera ajouté.
fragment.xml
<LinearLayout
android:id="@+id/scrollView"
android:layout_width="0dp"
android:layout_height="0dp"
android:isScrollContainer="false"
app:layout_constraintBottom_toTopOf="@+id/footerBorder"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/headerBorder">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:touchscreenBlocksFocus="true"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
Il ne vous reste plus qu'à implémenter l'écouteur avec onCreateView ou onCreatedView.
Fragment.java
RecyclerView recyclerView = view.findViewById(R.id.recyclerView);
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//Masquer le clavier
InputMethodManager inputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
//Déplacer le focus vers l'arrière-plan
recyclerView.requestFocus();
return false;
}
});
c'est tout.
J'espère que cela sera utile à n'importe qui.