Свиването на оформлението на лентата с инструменти се разширява при щракване, а не при превъртане

Имам проста лента с инструменти с елемент с икона за информация вдясно. Когато щракна върху елемента, бих искал да разширя лентата с инструменти с анимация. С нов изглед и FAB бутон. Както прави Textra SMS.

Когато щракам извън разширената лента с инструменти, искам да я свия.

Търся как мога да се справя с това с CollapsingToolbarLayout? Възможно ли е? Всички примери, които намирам в мрежата, се свиват/разширяват с превъртането на изгледа (Recyclerview, Scrollview и т.н....). Но не искам лентата ми с инструменти да се движи, когато превъртам изгледа си.

Добър начин ли е да използвате CollapsingToolbarLayout? или трябва да го направя всичко сам?


person Chol    schedule 07.01.2016    source източник


Отговори (1)


CollapsingToolbarLayout изглежда идеално за тази цел (и всъщност вярвам, че ще направи оформлението ви да изглежда много по-добре от това в приложението Textra SMS).

Ще ви трябват няколко неща:

  1. Начин за деактивиране на CollapsingToolbarLayout. Най-добрият начин според мен (поне най-добрият, който намерих досега) е да използвам персонализиран CoordinatorLayout вместо обикновения CoordinatorLayout.

    public class DisableableCoordinatorLayout extends CoordinatorLayout {
        private boolean mPassScrolling = true;
    
        public DisableableCoordinatorLayout(Context context) {
            super(context);
        }
    
        public DisableableCoordinatorLayout(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public DisableableCoordinatorLayout(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        @Override
        public boolean onStartNestedScroll(View child, View target, int nestedScrollAxes) {
            return mPassScrolling && super.onStartNestedScroll(child, target, nestedScrollAxes);
        }
    
        public void setPassScrolling(boolean passScrolling) {
            mPassScrolling = passScrolling;
        }
    }
    
  2. Трябва действително да деактивирате своя CollapsingToolbarLayout (не искате повече вашият CollapsingToolbarLayout да реагира на превъртания):

    mDisableableCoordinatorLayout.setPassScrolling(false);
    
  3. Трябва да използвате своя AppBarLayout, за да разгънете CollapsingToolbarLayout щракване върху елемента в менюто с опции

    mAppBarLayout.setExpanded(true, true);
    
  4. Трябва също да използвате AppBarLayout, за да свиете CollapsingToolbarLayout при щракване отвън (внедрете щракване отвън по какъвто начин желаете)

    mAppBarLayout.setExpanded(false, true);
    
person Bartek Lipinski    schedule 07.01.2016