Имам едно приложение Activity за Android с много фрагменти. Когато показвам екран със списък, искам да използвам Toolbar
със свойството app:layout_scrollFlags="scroll|enterAlways"
. И в детайлните фрагменти искам да използвам CollapsingToolbarLayout
с изображение в него. Тъй като това е едно приложение за активност, имам само едно Toolbar
. Възможно ли е да променя оформлението си програмно, за да отговаря на двата случая?
Промяна на флаговете за превъртане на лентата с инструменти и CollapsingToolbarLayout програмно
Отговори (3)
да Да приемем, че преминавате от фрагмента CollapsingToolbarLayout към този на лентата с инструменти.
Вие свивате своя
AppBarLayout
с помощта наAppBarLayout.setExpanded(false)
;Променяте флаговете за превъртане, за да отговарят на вашите нужди.
AppBarLayout.LayoutParams p = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); p.setScrollFlags(...); toolbar.setLayoutParams(p);
Същото важи и за CollapsingToolbarLayout, ако е необходимо. Предполагам, че трябва да е нещо като:
collapsingToolbarParams.setScrollFlags(0); //no flags for ctl toolbarParams.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS); //new flags for toolbar
person
natario
schedule
05.09.2015
И аз имах този проблем. Изглежда, че съм забравил да извикам метода
setLayoutParams()
. Благодаря за отговора!
- person Mauker; 05.01.2016
setScrollFlags(0) работи добре, но когато се опитам да го настроя на това: params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS | AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP); // изчистване на всички флагове за превъртане toolbar.setLayoutParams(params); не работи..
- person iBobb; 13.03.2016
Открих, че работи
public void disableToolBarScrolling() {
CollapsingToolbarLayout toolbar = findViewById(R.id.collap_toolbar);
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(0);
}
public void enableToolBarScrolling() {
CollapsingToolbarLayout toolbar = findViewById(R.id.collap_toolbar);
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS);
}
person
Vivek Pratap Singh
schedule
18.11.2019
Работи за мен.
public void enableToolBarScrolling(CollapsingToolbarLayout toolbar) {
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(SCROLL_FLAG_SCROLL | SCROLL_FLAG_ENTER_ALWAYS);
toolbar.setLayoutParams(params);
}
person
Julio Cesar
schedule
17.03.2021