Ich habe mehrere Fragmente, die denselben Container verwenden, und wenn ein Fragment über ein anderes hinzugefügt wird, möchte ich den Fokus nur zwischen den Ansichten des kürzlich hinzugefügten Fragments verschieben . Ich habe versucht, es mit onBackstackChangeListener() zu lösen, aber es scheint nicht zu funktionieren. Wie im Bild möchte ich nur auf das Pin-Entry-Fragment fokussieren, aber der Fokus verschiebt sich auch auf die "Enter" -Buttons auf dem Fragment hinter dem Pin-Entry-Fragment. Bitte helfen Sie.Fokus auf nur ein Fragment in einem Container mit mehreren hinzugefügten Fragmenten beschränken
Antwort
Wenn Sie einen einzelnen Container für alle Fragmente verwenden, müssen Sie den obersten Stamm Ihrer Fragmente anklickbar setzen. Andernfalls kann Fragment hinter den Fokus für anklickbare Elemente greifen. Sehen Sie sich zum Beispiel das Fragmentlayout unten an.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:textColor="@color/white"
android:textSize="@dimen/normal_text" />
</LinearLayout>
Ich fand eine Arbeit um dieses Problem, aber es ist keine echte Lösung, Beste Antwort wird als richtige Antwort markiert.
Umgehen: Fügen Sie Ansichten um Ihr Layout hinzu, die den Fokus benötigen, um in sich selbst zu bleiben. Zum Beispiel:
<LinearLayout 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:layout_gravity="center"
android:orientation="horizontal"/>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:focusable="true"
android:id="@+id/left_view"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/buyOrWatch"
android:layout_width="90dp"
android:layout_height="30dp"
android:layout_margin="5dp"
android:background="@drawable/movie_buy_selector"
android:focusable="true"
android:gravity="center"
android:text="@string/buy"
android:textColor="@color/color_white" />
<TextView
android:id="@+id/preview"
android:layout_width="90dp"
android:layout_height="30dp"
android:layout_margin="5dp"
android:layout_marginTop="15dp"
android:background="@drawable/movie_buy_selector"
android:focusable="true"
android:gravity="center"
android:text="@string/preview"
android:textColor="@color/color_white" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:focusable="true"
android:id="@+id/right_view"/>
stellte ich das Layout mit der Textviews zwischen den beiden Ansichten mit fokussierbaren 0DP Breite. Verknüpfen Sie jetzt in Ihrer Fragmentklasse diese Ansichten und definieren Sie dann für diese Ansichten focusChangeListener()
. zum Beispiel, wenn leftView
bindet mit der ID sehen android:id="@+id/left_view"
und buyOrWatch
mit TextView
android:id="@+id/buyOrWatch"
hat, dann,
leftView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
if(hasFocus){
buyOrWatch.requestFocus();
}
}
});
können Sie ähnliche Zuhörer Fokusänderung wie oben für jede Ansichten definieren, dann solange das Fragment sichtbar ist, Fokus bleibt bei im Fragment. Hoffe, das hilft jemandem.
- 1. Fokus auf Fragment deaktivieren
- 2. FloatingActionButton in Aktivität mit mehreren Fragmenten?
- 3. Umgang mit mehreren Fragmenten Werte
- 4. Mehrere Container mit Dragula, aber beschränken Sie die Elemente nur auf ihren Container
- 5. ein Fragment zu einem anderen Fragment auf Knopf klicken
- 6. Internetzugriff auf Andock-Container beschränken?
- 7. Wie man onBackPressed() in mehreren Fragmenten behandelt
- 8. usib-datepicker auf nur ein Jahr beschränken
- 9. Fokus Problem mit mehreren JPanels & einem Thread
- 10. Ein Klick Listener in Fragmenten
- 11. setTranslationY ein weißes Fenster erscheint auf meinem Fragment Container
- 12. onBackPressed mit Fragmenten und Speichern Fragment-Status
- 13. Kontextmenü auf ListView in Fragmenten
- 14. Zeige MySQL-Daten in Recycleview mit Fragmenten
- 15. Fragmenten Probleme auf Android Studio
- 16. Wie führe ich ein Splash-Fragment nur einmal aus?
- 17. Kommunikation zwischen 2 Fragmenten in einem Viewpager - Aktualisierung RecyclerView in Fragment B aus Fragment A
- 18. Null Objektreferenz zwischen zwei Aktivitäten mit mehreren Fragmenten
- 19. Kommunikation zwischen zwei untergeordneten Fragmenten in einem verschachtelten Fragment
- 20. android - Schließen ein Fragment auf einem kompliziertes Projekt
- 21. Meteor.loginWithPassword Nur auf Admin beschränken
- 22. Auf nur englische Zeichen beschränken
- 23. Ändern der Liste auf Fragment ändert sich in anderen Fragmenten
- 24. Zeige Fortschrittsbalken nur in einem von zwei Fragmenten auf Tablet in Android
- 25. Ein Fragment mit zwei oder mehreren Layouts und Verhaltensweisen
- 26. Setzen Sie den Fokus auf den hinzugefügten Artikel
- 27. ein Fragment aus einem Fragment
- 28. Thymeleaf render auf Fragmenten
- 29. Viewpager in einem Fragment
- 30. Wie man onOptionsAlteselected mit Single Activity mit mehreren Fragmenten verwendet
Machen Sie die oberste Wurzel Ihrer Fragmente anklickbar in XML. – ADM
@ADM können Sie bitte mehr erklären ... –