In meinem Fragment ich meine Gridlayout in der folgenden Art und Weise bin Einstellung: mRecycler.setLayoutManager(new GridLayoutManager(rootView.getContext(), 2));
ändern Anzahl der Spalten mit GridLayoutManager und RecyclerView
Also, ich möchte nur, dass 2
ein 4
für ändern, wenn der Benutzer das Telefon dreht/Tablette. Ich habe über onConfigurationChanged
gelesen und ich habe versucht, es für meinen Fall funktionieren zu lassen, aber es geht nicht richtig. Wenn ich mein Handy rotiere, stürzt die App ab ...
Können Sie mir sagen, wie ich dieses Problem lösen kann?
Hier ist mein Ansatz, um die Lösung zu finden, die funktioniert nicht richtig:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int orientation = newConfig.orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
mRecycler.setLayoutManager(new GridLayoutManager(mContext, 2));
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
mRecycler.setLayoutManager(new GridLayoutManager(mContext, 4));
}
}
Vielen Dank im Voraus!
fügen Sie bitte ein Absturzprotokoll hinzu –
Ich habe gerade einen Blick auf meine Logcat geworfen und dies verursachte nicht den Absturz. Aber es funktioniert immer noch nicht. – fapps
Ich würde keinen neuen Manager erstellen, sondern stattdessen einen vorhandenen verwenden. Verwenden Sie getLayoutManager() in Ihrer Recycleransicht, um sie in GridLayoutManager zu konvertieren. Auf diesem Manager-Aufruf setSpanCount (orientation == Porträt? 2: 4) Und um die Ansicht neu zu zeichnen Aufruf adaper.notifyDatasetChanged() Dies sollte gut funktionieren, wenn Ihre Ansicht nicht jedes Mal neu gezeichnet wird. –