Android Lollipop-werkbalk: hoe kan ik de werkbalk verbergen/weergeven tijdens het scrollen?

Ik gebruik de nieuwe werkbalkwidget die is geïntroduceerd in appcompat / support-v7. Ik wil de werkbalk verbergen/weergeven, afhankelijk van of de gebruiker omhoog/omlaag scrolt op de pagina, net als in de nieuwe Google Playstore-app of NewsStand-app. Is hiervoor iets ingebouwd in de werkbalkwidget of moet ik het gebruiken in combinatie met FrameLayout en ObservableScrollView?


Antwoord 1, autoriteit 100%

Voor zover ik weet is er niets ingebouwd dat dit voor je doet. U kunt echter de Google IO-broncode bekijken, met name de BaseActivity. Zoek naar “automatisch verbergen” of kijk naar onMainContentScrolled

Om de Toolbarte verbergen, kun je zoiets als dit doen:

toolbar.animate().translationY(-toolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start();

Als je het nog een keer wilt laten zien, bel je:

toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start();

Antwoord 2, autoriteit 53%

Om de werkbalk te verbergen, kunt u het volgende doen:

getSupportActionBar().hide();

Je hoeft dus alleen maar een scroll-listener te hebben en de werkbalk te verbergen wanneer de gebruiker scrollt!


Antwoord 3, autoriteit 34%

Verbergen:

getSupportActionBar().hide();

Toon:

getSupportActionBar().show();

Antwoord 4, autoriteit 20%

Het antwoord is duidelijk. Implementeer gewoon OnScrollListeneren verberg/toon uw werkbalk in de listener. Als u bijvoorbeeld listview/recyclerview/gridview heeft, volg dan het voorbeeld.

In uw MainActivity Oncreatemethode, initialiseer de werkbalk.

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        if (toolbar != null) {
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }
}

En implementeer vervolgens de OnScrollListener

public RecyclerView.OnScrollListener onScrollListener = new RecyclerView.OnScrollListener() {
        boolean hideToolBar = false;
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if (hideToolBar) {
                ((ActionBarActivity)getActivity()).getSupportActionBar().hide();
            } else {
                ((ActionBarActivity)getActivity()).getSupportActionBar().show();
            }
        }
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            if (dy > 20) {
                hideToolBar = true;
            } else if (dy < -5) {
                hideToolBar = false;
            }
        }
    };

Ik kreeg het idee van: https://stackoverflow.com/a/27063901/1079773


Antwoord 5, autoriteit 10%

Android Design-ondersteuningsbibliotheek kan worden gebruikt om de werkbalk te tonen/verbergen.

Zie dit.
http://android-developers.blogspot.kr/ 2015/05/android-design-support-library.html

En er zijn detailvoorbeelden hier.
http://inthecheesefactory.com/blog/android-design-support- library-codelab/nl


Antwoord 6, autoriteit 3%

Er zijn eigenlijk heel een aantal manieren om de Werkbalk verbergen / tonen terwijl u scrollen met de inhoud. Een van de manieren is om dit te doen via de Design Library Android Ondersteuning of meer specifiek de coördinator lay-out aka. super-aangedreven chassis lay-out.

In principe alles wat je hoeft te doen is om de volgende structuur in uw layout-bestand en je moet in staat zijn om het resultaat dat u wilt bereiken.

<CoordinatorLayout>
   <AppBarLayout>
   </AppBarLayout>
   <NestedScrollView>
   </NestedScrollView>
</CoordinatorLayout>

Ik heb eigenlijk maakte een video om uit te leggen hoe het kan worden gedaan in een stapsgewijze manier. Voel je vrij om het te controleren en laat me weten als het helpt. Bedankt! 🙂

https://youtu.be/mEGEVeZK7Nw


7, Autoriteit 3%

Just Voeg deze woning in de werkbalk en zijn gedaan

app:layout_scrollFlags="scroll|enterAlways"

Is het niet geweldig is


8

Om het menu voor een bepaald fragment te verbergen:

setHasOptionsMenu(true); //Inside of onCreate in FRAGMENT:  
   @Override
   public void onPrepareOptionsMenu(Menu menu) {
       menu.findItem(R.id.action_search).setVisible(false);
   }

9

Ik heb een hulpprogramma-klasse geïmplementeerd om de hele verberg/toon werkbalk-animatie te doen tijdens het scrollen. Je kunt het artikel hier bekijken http://rylexr.tinbytes.com/2015/04/27/how-to-hideshow-android-toolbar-when-scrolling-google-play-musics-behavior/. Broncode is hier https://github.com/rylexr/android-show-hide-toolbar .


Antwoord 10

Een bibliotheek en demo met de volledige broncode voor scrollende werkbalken of elk type kop kunnen hier worden gedownload:

https://github.com/JohannBlake/JBHeaderScroll

Kopteksten kunnen werkbalken, lineaire lay-outs, relatieve lay-outs of welk type weergave dan ook zijn om een ​​koptekst te maken.

Het scrollbare gebied kan elk type scroll-inhoud zijn, inclusief ListView, ScrollView, WebView, RecyclerView, RelativeLayout, LinearLayout of wat je maar wilt.

Er is zelfs ondersteuning voor geneste kopteksten.

Het is inderdaad een complexe onderneming om kopteksten (werkbalken) en schuifbare inhoud te synchroniseren zoals in Google Kiosk.

Deze bibliotheek vereist geen implementatie van enige vorm van onScrollListener.

De oplossingen die hierboven door anderen worden opgesomd, zijn slechts halfbakken oplossingen die er geen rekening mee houden dat de bovenrand van het schuifbare inhoudsgebied onder de werkbalk eerst moet worden uitgelijnd met de onderrand van de werkbalk en vervolgens tijdens het scrollen de inhoudsgebied moet worden verplaatst en mogelijk van grootte worden veranderd. De JBHeaderScroll behandelt al deze problemen.


Antwoord 11

Er is een Android-bibliotheek genaamd Android Design Support Library, een handige bibliotheek waar u al die mooie materiaalontwerpen kunt vinden die in de materiaaldocumentatie worden gepresenteerd, zonder u te vertellen hoe u ze moet doen.

Het wordt goed weergegeven in dit Android-blogbericht. Vooral de “Samenvouwende werkbalk” is wat u zoekt.

Other episodes