Ich versuche, Flexible Space mit Bildmuster zu implementieren, mit this tutorial.AppBarLayout Höhe programmatisch in Android ändern
Alles funktioniert gut.
Beachten Sie die Höhe Definition der AppBarLayout, die 192dp ist.
Ich möchte stattdessen die Höhe 1/3 des Bildschirms, um this google example for the pattern here entsprechen.
Hier ist der Code in der onCreate Aktivität (das Layout xml ist genau die gleiche wie im Tutorial):
AppBarLayout appbar = (AppBarLayout)findViewById(R.id.appbar);
float density = getResources().getDisplayMetrics().density;
float heightDp = getResources().getDisplayMetrics().heightPixels/density;
appbar.setLayoutParams(new CoordinatorLayout.LayoutParams(LayoutParams.MATCH_PARENT, Math.round(heightDp/3)));
Aber aus irgendeinem Grunde, das Ergebnis ist nicht das, was ich erwarte. Ich kann die App-Leiste mit diesem Code überhaupt nicht sehen. (Ohne den Code wird die Höhe wie erwartet angezeigt, aber sie stammt aus XML und kann nicht dynamisch festgelegt werden).
Sollte das nicht so sein ?: float density = mParentActivity.getResources(). getDisplayMetrics(). dichte; float heightDp = mParentActivity.getResources(). GetDisplayMetrics(). HeightPixels/Dichte; – David