In meiner Navigationsansicht habe ich ein Header-Layout mit der ID 'viewId' mit aktiven Schaltflächen. Um diese Schaltflächen einzurichten, gehe ich in den Aktivitäten wie folgt vor onPostCreate
:
final View panel = findViewById(R.id.viewId);
panel.setOnClickListener(new View.OnClickListener() {
... setup goes here ...
});
Mit der Android-Unterstützungsbibliothek der neuen Version ( 23.1.0 ) kann die Ansicht nicht gefunden werden und gibt null zurück. Mit früheren Versionen hat es gut funktioniert. Ist es ein Fehler oder verwende ich diese Funktion falsch? Wenn ja, wie kann man auf das Header-Layout zugreifen und ihm Verhalten hinzufügen?
inflateHeaderView
, wird die Ansicht für Sie in der richtigen EbeneRecyclerView
mit dem richtigen übergeordneten Element angehängt - etwas, das Sie extern nicht tun könnenNavigationView
.Mit der Version 23.1.1 der Design-Support-Bibliothek können Sie jetzt verwenden
quelle
navigationView.getHeaderCount()
wenn Sie aus irgendeinem Grund mehr als einen Header haben.So habe ich es gemacht
ButterKnife
und es funktioniert für mich.und verwenden Sie dann diesen Ansichtshalter wie folgt:
quelle
Für mich war das die gleiche Situation mit 23.1.0, nach dem Update wird die Nullzeiger-Ausnahme. In diesem Fall
NavigatorView
sieht das so aus:Ich habe den Lösungsvorschlag von ianhanniballake ausprobiert, aber er funktioniert nicht. Dann habe ich mit dem Satz aufgeblasen:
Danach kann ich anhand der ID alle im
nav_heard
Layout definierten Ansichten finden .quelle
quelle
In Kotlin @Francois Dermu Code sei wie
quelle
Kotlin-Version.
quelle