RecyclerView eignet sich zum Anzeigen einer Liste. Wenn Sie diese Standardeinstellung jedoch beibehalten, können Sie kein Ereignis auslösen, wenn Sie den Rand berühren. Ich habe nach einer Implementierung gesucht, um die Softtastatur durch Berühren des Randes von RecyclerView zu schließen, daher möchte ich sie freigeben.
Zuerst zu RecyclerView
android:touchscreenBlocksFocus="true"
Wird hinzugefügt werden.
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>
Jetzt müssen Sie nur noch den Listener mit onCreateView oder onCreatedView implementieren.
Fragment.java
RecyclerView recyclerView = view.findViewById(R.id.recyclerView);
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//Tastatur ausblenden
InputMethodManager inputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
//Bewegen Sie den Fokus in den Hintergrund
recyclerView.requestFocus();
return false;
}
});
das ist alles.
Ich hoffe, es wird jedem helfen.
Recommended Posts