0

Я использую панель действий appCompat. Я пытаюсь сделать домашний фид, такой как instagram, пока пользователь прокручивает панель действий, скрывается и наоборот.Как я могу управлять панелью управления функциями при прокрутке списка?

Приведенный ниже код является самым основным способом, чтобы скрыть и показать действие при прокрутке вид списка

int mLastFirstVisibleItem = 0; 

if (view.getId() == mListView.getId()) { 
    final int currentFirstVisibleItem = mListView.getFirstVisiblePosition(); 

    if (currentFirstVisibleItem > mLastFirstVisibleItem) { 
     getSupportActionBar().hide(); 
    } else if (currentFirstVisibleItem < mLastFirstVisibleItem) { 
     getSupportActionBar().show(); 
    } 

    mLastFirstVisibleItem = currentFirstVisibleItem; 
} 

Проблема заключается в том, когда я прокрутить ListView медленно панель действий будет держать скрыть и показать repeatly.It не дает мне возможности контролировать, насколько я хочу скрыть или показать панель действий. Я хочу, когда я прокручиваю вниз или вверх по списку, панель действий будет следовать за жестом, в конце концов, когда пользователь отключится от экрана, который он будет скрывать или показывать, зависит от размера видимой панели действий на экране.

Например, пока я прокручиваю 2px, панель действий будет расти или скрыть 2px. И если размер панели действий останется на экране 20 пикселей, а размер панели действий - 50 пикселей, он скроет ее, как и код ниже.

//this is just a demo of how I want the action bar to work not any type of programming language 
//visibleActionBarOnscreen is the actionbarsize remain on screen 

if(visibleActionBarOnScreen > actiobarSize/2){ 
    //show the action bar 
}else{ 
    //hide the action bar 
} 

Push out/pull in ActionBar when ListView is scrolled Эта ссылка описывает, как управлять панелью действий. Но я до сих пор не знаю, как это сделать. В дополнение, это не автоматическая корректировка панели действий, чтобы полностью скрыть или показать, но пусть панель действий отображается наполовину на экране, когда пользователь отключается от экрана. Пожалуйста, помогите мне сделать это, я буду на 100% apperciate!

+0

Если вы хотите использовать любую библиотеку см [ObservableScrollView] (https://github.com/ksoichiro/Android-ObservableScrollView) – Harry

ответ

1

Если вы хотите гладкие переходящий бар, вы можете реализовать свой собственный обычай ActionBar с использованием макета (возможно горизонтальным линейным компоновщиком, чтобы поместить материал в ActionBar по горизонтали) и анимация/переход приложение заголовка с помощью устанавливая отрицательные поля, чтобы вывести его из верхней части экрана. (Это альтернативное решение с более настраиваемостью.)

Это пример оживляющих краев макета: Change Left Margin Using Animation (Вы должны изменить его верхний край)

Однако, это не будет " прилипание ", как вы говорите (это не будет пребывания на 2px или половина пути и т. д.). Для того, чтобы реализовать «прилипание» прокрутку ActionBar вы хотите, чтобы переопределить OnScrollListener() на ваш ListView или CustomScrollView и сделать некоторую математику так:

int scrollpos = (int)view.getScrollY(); 
if(scrollpos<70) { //trigger scroll movement 
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)findViewById(R.id.ListView).getLayoutParams(); 
    params.topMargin = -scrollpos; 
    //if scrollpos = 0, then topMargin will = 0, completely visible. 
    //if scroll is past 70, then topMargin will = -70, completely hidden. 
    //assuming your action-bar is 70px 
    findViewById(R.id.ListView).setLayoutParams(params); 
} 

Вы действительно должны установить topMargin путем получения и установки LayoutParams, я не включал это там. Я отсутствую в Java IDE, поэтому я не могу скомпилировать код на данный момент.

Надеется, что это помогает,

+1

Thx братана .. Я использую uiautomatorViewer осмотреть ActionBar в instagram .. Он использует линейную компоновку тоже – delto2u

 Смежные вопросы

  • Нет связанных вопросов^_^