Próbuję zaimplementować Elastyczną przestrzeń ze wzorcem obrazu, używając this tutorial.Zmiana wysokości AppBarLayout programowo w systemie Android
Wszystko działa poprawnie.
Zwróć uwagę na definicję wysokości AppBarLayout, która wynosi 192dp.
Chciałbym ustawić wysokość 1/3 ekranu, aby dopasować this google example for the pattern here.
Oto kod w działalności za onCreate (xml układ jest dokładnie taka sama jak w tutorialu):
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)));
Ale z jakiegoś powodu, wynik nie jest to, czego oczekuję. W ogóle nie widzę paska aplikacji z tym kodem. (bez kodu wysokość jest zgodna z oczekiwaniami, ale pochodzi z XML i nie może być ustawiona dynamicznie).
Czy nie powinno tak być ?: float density = mParentActivity.getResources(). getDisplayMetrics(). density; float heightDp = mParentActivity.getResources(). GetDisplayMetrics(). HeightPixels/density; – David