Maak een Google Play Developer -account – Helpcentrum – Pandasuite, MDC -102: Materiaalstructuur en lay -out | Google Codelabs
MDC-102: Materiaalstructuur en lay-out
Materiaalontwerp biedt navigatie -formaten die een groot gebruiksgemak garanderen. Een van de meest zichtbare componenten is de bovenste toepassingsbalk.
Maak een Google Play Developer -account aan
Informeer uw persoonlijke gegevens, het adres van uw keuze en uw wachtwoord.
Accepteer de algemene verkoopvoorwaarden (GTC).
Voeg een mooie foto van jezelf toe.
Maak een Google Play Developer -account aan
De procedure voor het maken van een Google Play Developer -account is veel eenvoudiger dan bij Apple.
Maak verbinding met uw Gmail -adres.
Accepteer de GTC.
Registratiekosten aanpassen: een enkele betaling van 25 euro om alle aanvragen van uw keuze te publiceren !
Informeer de informatie met betrekking tot uw account: naam van de ontwikkelaar, e -mailadres en telefoonnummer.
Dit heeft uw vraag beantwoord ?
Bedankt voor de reacties, er was een probleem om uw opmerkingen in te dienen. Probeer het later opnieuw.
Laatste update op 9 november 2021
Bijbehorende artikelen
- Maak een applicatie op Google Play Console
- Genereer het Android P12 -certificaat
- Exporteer het APK- of AAB -bestand
- Publiceer een Android -applicatie
- Publiceer een Android -app buiten de Play Store
- Publiceer op Google Play Store
MDC-102: Materiaalstructuur en lay-out

Materiaalcomponenten (MDC) helpt ontwikkelaars om materiaalontwerp te implementeren. Ontworpen door een team van ingenieurs en specialisten op het gebied van gebruikerservaring bij Google, biedt MDC tientallen elegante en functionele gebruikersinterface -componenten. Het is beschikbaar voor Android, iOS, internet en flutter.materiaal.Io/ontwikkelen.
In de MDC-101-programmeerworkshop gebruikte u twee materiaalcomponentenelementen om een verbindingspagina te maken: tekstvelden en knoppen bestaande uit “inkt” -animaties. Laten we op deze basis onze toepassing verrijken door navigatie, structuur en gegevens toe te voegen.
Workshop -doelstellingen
In deze programmeerworkshop maakt u een startscherm voor Altaar, Een e-commerce-aanvraag voor de verkoop van kleding en artikelen voor het huis. Dit scherm zal bevatten:
- Een hogere applicatiebalk
- Een lijst met producten in de vorm van een raster
![]()
![]()
Houd er rekening mee dat deze programmeerworkshop is vervangen door materiaal 3, met uitzondering van screenshots. Ze geven toch dezelfde informatie over.
Deze programmeerworkshop is de tweede van de vier workshops die u zullen helpen een applicatie te maken voor een product genaamd Sanctuary. We raden u aan alle programmeerworkshops op volgorde te volgen, om de taken beetje bij beetje vooruit te gaan. U zult hier uw programmeerworkshops vinden:
- MDC-101 Flutter: basisprincipes van de materiaalcomponenten
- MDC-103 Flutter: gebruik van thema’s van materiaalontwerp (kleur, vormen, hoogte en type)
- MDC-104 Flutter: geavanceerde materiaalontwerpcomponenten
![]()
Materiaal flutter materiaalcomponenten en subsystemen in deze programmeerwerkplaats
- Bovenste
- Roosters
- Kaarten
In deze programmeerworkshop gebruikt u de standaardcomponenten die worden geleverd door materiaalflutter. U leert ze aan te passen in de sectie MDC-103: gebruik van thema’s van materiaalontwerp (kleur, vormen, hoogte en type).
Hoe zou u uw niveau van ervaring in ontwikkeling beoordelen met flutter ?
2. Configureer de flutter -ontwikkelingsomgeving
Voor deze workshop heb je twee software nodig: de flutter SDK en een uitgever.
U kunt de programmeerworkshop uitvoeren op een van de volgende apparaten:
- Een Android- of fysiek iOS -apparaat aangesloten op uw computer en ingesteld in de ontwikkelaarsmodus.
- De iOS -simulator (Xcode -tools om te installeren).
- De Android -emulator (die moet worden geconfigureerd in Android Studio).
- Een browser (Chrome is vereist voor foutopsporing).
- Als Windows, Linux of MacOS -bureaublad. U moet uw applicatie ontwikkelen op het platform waar u van plan bent deze te implementeren. Als u bijvoorbeeld een Windows -desktoptoepassing wilt ontwikkelen, moet u deze op Windows doen om toegang te krijgen tot de juiste compilatieketen. Leer ook meer over de specifieke vereisten voor besturingssystemen, die gedetailleerd zijn op documenten.fladderen.Dev/bureaublad.
3. Download de vertrek -app voor de programmeerworkshop
Je hebt de MDC-101-workshop al gevolgd ?
Als u de MDC-101-programmeerworkshop hebt voltooid, moet uw code klaar zijn om deze workshop te starten. Ga naar de volgende fase: Voeg een hogere applicatiebalk toe.
Je begint helemaal opnieuw ?
Download de vertrektoepassing van de startworkshop
De starttoepassing bevindt zich in de materiaalcomponent-flutter-codelabs-102-starter_and_101-complete/mdc_100_series .
… of klon de workshop van GitHub
Voer de volgende opdrachten uit om deze programmeerworkshop van GitHub te klonen:
Git kloon https: // github.Com/materiaalcomponenten/materiaal-componenten-flutter-codelabs.Git CD-materiaal-componenten-flutter-codelabs/mdc_100_series Git Checkout 102-Starter_and_101-Complete
Zie voor hulp het kloneringssectie van GitHub
Kies de juiste tak
De MDC-101 programmeerworkshops op 104 vertrouwen op elkaar. Dus wanneer u de code voor de MDC-102-workshop voltooit, wordt dit de startcode van de MDC-103-workshop. De code is verdeeld in verschillende takken, die u de lijst kunt weergeven met behulp van deze opdracht:
Git Branch -List
Ga naar de voltooide code om de voltooide code weer te geven .
Open het project en voer de applicatie uit
- Open het project in de uitgever van uw keuze.
- Volg de instructies met betrekking tot de uitgever die u hebt gekozen. Ze zijn toegankelijk voor de paragraaf “De app uitvoeren” (de applicatie uitvoeren) op de pagina Starts> Testaandrijving (eerste stappen> test).
Succesvolle operatie. De Sanctuary-verbindingspagina van de MDC-101-programmeerwerkplaats moet op uw apparaat worden weergegeven.
![]()
![]()
Nu het verbindingsscherm bestaat, laten we enkele producten toevoegen aan de applicatie.
4. Voeg een hogere applicatiebalk toe
Als u op dit moment op de knop “Volgende” klikt, wordt het startscherm weergegeven met het bericht “U hebt het gedaan!” (Je bent geslaagd.)). Perfect. Onze gebruiker heeft echter niets te doen en weet niet waar hij is in de toepassing. Om u te helpen, is het tijd om navigatie toe te voegen.
Daar navigatie verwijst naar componenten, interacties, visuele indicatoren en informatiearchitectuur waarmee gebruikers in een applicatie kunnen navigeren. Hiermee kunt u inhoud en functies ontdekken en eenvoudig taken uitvoeren.
Raadpleeg voor meer informatie het artikel dat is gewijd aan navigatie in de instructies voor materiaalontwerp.
Materiaalontwerp biedt navigatie -formaten die een groot gebruiksgemak garanderen. Een van de meest zichtbare componenten is de bovenste toepassingsbalk.
Mogelijk kent u dit element onder de naam “Navigation Bar” onder iOS, of gewoon “Application Bar” of “Header”.
Laten we een hogere applicatiebalk voegen om gebruikers snel toegang te geven tot andere acties.
Voeg een AppBar -widget toe
In huis.Dart, voeg een appbar toe aan “steiger” en verwijder vervolgens de const gemarkeerde:
Return Const Scaffold (// TODO: App Bar toevoegen (102) AppBar: AppBar (// TODO: Knoppen toevoegen en titel (102)), De toevoeging van deAppbar Op het veld AppBar: Scaffolding stelt ons in staat om een perfecte en gratis lay -out te verkrijgen, waardoor de applicatiebalk bovenaan de pagina en onder het lichaam wordt achtergelaten.
Steiger is een belangrijke widget in MaterialApps. Het biedt praktische API’s om allerlei huidige zakencomponenten weer te geven, zoals panelen, “snackbar” meldingsstaven en bodemelementen. Het vergemakkelijkt zelfs de plaatsing van een drijvende actieknop.
Raadpleeg de flutter -documentatie om meer te weten te komen over steiger.
Noteer het project. Zodra het heiligdom is bijgewerkt, klikt u op Volgende (Volgende) om het startscherm weer te geven.
![]()
![]()
Het element is goed gepositioneerd, maar het mist een titel.
Voeg een tekstwidget toe
In huis.Dart, voeg een titel toe aan de AppBar -applicatiebalk:
// TODO: App Bar toevoegen (102) AppBar: AppBar (// TODO: Knoppen toevoegen en titel (102) Titel: Const Text ('Shrine'), // Todo: ToR -achterbanden toevoegen (102) Noteer het project.
![]()
Mogelijk heeft u variaties opgemerkt voor elk platform. Het materiaalontwerpsysteem houdt rekening met dat elk platform (Android, iOS, Web) anders is en dat de verwachtingen van de gebruikers anders zijn. Op iOS zijn de titels bijvoorbeeld bijna altijd gecentreerd. Dit is het standaardgedrag van Uikit. Op Android zijn ze aan de linkerkant opgesteld. Daarom, als u een emulator of een Android -apparaat gebruikt, moet uw titel links worden uitgelijnd. In het geval van een simulator of een iOS -apparaat moet deze worden gecentreerd.
Raadpleeg dit artikel voor meer informatie over aanpassing aan verschillende platforms met materiaalontwerp.
Veel applicatiebars hebben een knop naast de titel. Voeg een menu -pictogram toe aan onze applicatie.
Voeg een iconbutton -knop toe aan het begin van de lijn
Altijd thuis.Dart, definieer een Iconbutton -element voor het toonaangevende veld: van de AppBar -applicatiebalk. (Plaats het vóór het titelveld: in overeenstemming met de start van start tot het einde van de lijn):
// TODO: Toevoeg knoppen en titel (102) Leiding: IconButton (Icon: const Icon (iconen (iconen.Menu, semanticlabel: 'Menu',), onpressed: () < print('Menu button'); >, )), Noteer het project.
Het menu -pictogram (ook wel “hamburger” genoemd), verschijnt op de gewenste locatie.
De klas Iconbutton is een praktische manier om materiële pictogrammen in uw toepassing te integreren. Ze gebruikt een widget Icoon. Flutter heeft een complete verzameling iconen in de klas Pictogrammen. Pictogrammen worden automatisch geïmporteerd volgens “const” kanaaltoewijzingen.
Zie de flutter -documentatie voor meer informatie over de pictogrammen. Zie de flutter -documentatie voor meer informatie over de pictogramwidget.
U kunt ook knoppen toevoegen aan het einde van de lijn. In flutter worden deze knoppen “acties” genoemd.
Voorwaarden begin En EINDE druk de betekenis van lezen uit, ongeacht de betrokken taal. Als je in een tong werkt die van links naar rechts leest, zoals Engels, begin middelen naar links En EINDE middelen naar rechts. In een taal die van rechts naar links leest, zoals Arabisch, de term begin middelen naar rechts, En EINDE middelen naar links.
Raadpleeg de instructies voor materiaalontwerp over bidirectionaliteit om meer te weten te komen over de omkering van de gebruikersinterface.
Acties toevoegen
Er is voldoende ruimte voor twee andere iconbutton -elementen.
Voeg ze toe aan de AppBar -instantie na de titel:
// TODO: Acties toevoegen (102) Acties: [Iconbutton (Icon: const icon (iconen (iconen.Zoeken, semanticlabel: 'zoeken',), ontpresd: () < print('Search button'); >, ), IconButton (icon: const icon (iconen.Tune, SemanticLabel: 'Filter',), onpresd: () < print('Filter button'); >, ),], Noteer het project. Uw startscherm moet als volgt opkomen:
De applicatie heeft nu een knop aan het begin van de regel, een titel en twee acties aan de rechterkant. De applicatiebalk heeft ook een effect vanverhoging Vanwege een lichte tint die aangeeft dat het op een ander niveau is dan dat van de inhoud.
In een pictogramklasse, het veld Semanticlabel is een veel voorkomende manier om toegankelijkheidsinformatie toe te voegen om te fladderen. Het is een systeem dat heel dicht bij de formulering van de Android -inhoud en de uiaccessibility -functionaliteit op iOS AccessibilityLabelbel . Je zult het in veel cursussen vinden.
De informatie op dit gebied maakt het mogelijk om informatie te verstrekken over schermlezers over de rol van deze knop.
Als een widget geen SemanticLabel -veld heeft:, kunt u deze inkapselen in een widget Semantiek. Zie de flutter -documentatie voor meer informatie over de semantiekwidget voor meer informatie over de semantiek.
5. Voeg een blad toe in een rooster
Nu onze toepassing iets meer gestructureerd is, laten we de inhoud ervan organiseren door ze in bestanden te plaatsen.
DE kaarten zijn onafhankelijke elementen die de inhoud en acties weergeven die zijn gekoppeld aan een bepaald onderwerp. Ze bieden een flexibele manier om vergelijkbare inhoud te presenteren in de vorm van een collectie.
Zie het artikel dat is gewijd aan bestanden in de materiaalontwerpinstructies voor meer informatie.
Raadpleeg het artikel over het creëren van lay -outs in Flutter voor meer informatie over de kaartwidget (blad).
Voeg een GridView -widget toe
Laten we beginnen met het toevoegen van een blad onder de bovenste applicatiebalk. Momenteel de widget Kaart (Blad) bevat onvoldoende informatie om jezelf zichtbaar te positioneren. We zullen het daarom in een widget inkapselen Rasterweergave.
Vervang het midden in het lichaam van het steiger -element door een GRIDVIEW -widget:
// TODO: Voeg een rasterweergave toe (102) Body: GridView.Count (Crossaxiscount: 2, Padding: Const EdgeInsts.Alles (16.0), Childaspectratio: 8.0/9.0, // TODO: Bouw een rooster van kaarten (102) kinderen: [Card ()],),), Laten we deze code analyseren. De widget van de Gruis roept de fabrikant count () aan, omdat het aantal elementen dat het weergeeft kan worden geteld en niet oneindig is. Maar hij heeft aanvullende informatie nodig om zijn lay -out te definiëren.
De variabele CrossaxCount: geeft het aantal elementen per regel aan. We willen twee kolommen krijgen.
L ‘transversale as In flutter komt overeen met de as die we niet scrollen. Het gevoel van scrollen wordt genoemd hoofdas. Als u verticaal scrollen gebruikt, zoals de standaardcase is met GridView, is de transversale as horizontaal.
Zie de pagina die is gewijd aan het maken van lay -outs voor meer informatie.
Het vullingveld: definieert een vrije ruimte aan de vier zijden van de GridView -widget. Natuurlijk is deze marge niet zichtbaar als gevolg van het element of eronder, omdat er voorlopig nog geen kindergridview naast dit element is geplaatst.
Het Field ChildAsecto: identificeert de grootte van de elementen in de vorm van verhoudingen (breedte op hoogte).
GridView maakt standaard blokken van identieke maat gemaakt.
We hebben een blad, maar het is leeg. Voeg kinderwidgets toe aan dit blad.
Zet de inhoud
De vellen moeten gebieden bevatten voor een afbeelding, een titel en secundaire tekst.
Update kinderen van de GridView -widget:
// TODO: Bouw een rooster van kaarten (102) Kinderen: [Card (ClipbeHavior: Clip.Antialias, kind: kolom (Crossaxisalignment: Crossaxisalignment.Start, kinderen: [aspectratio (aspectratio: 18.0/11.0, kind: afbeelding.Asset ('activa/diamant.png '),), padding (padding: const edgeinsts.fromltrb (16.0, 12.0, 16.0, 8.0), Kind: kolom (Crossaxisalignment: Crossaxisalignment.Start, Children: [Text ('Title'), const -sizedbox (hoogte: 8.0), text ('secundaire tekst'),],),),),],),),)]]], Deze code voegt een kolomwidget (kolom) toe waarmee u de widgets van kinderen verticaal kunt hebben.
De parameter Crossaxisalignment: Field specificeert de waarde Crossaxisalignment -waarde.Start, wat betekent dat “de tekst uitlijnen op de ‘Side’ ‘Side’ ‘.
De widget Aspectratio Definieert de verhoudingen van de weergegeven afbeelding, ongeacht het type beeld dat wordt verstrekt.
Het element Vulling Definieert een marge voor de tekst.
De twee widgets Tekst De ene boven de andere wordt geplaatst en gescheiden door acht lege ruimtepunten (Grootbox)). We creëren een ander element Kolom Om ze interieurmarges te geven.
Noteer het project.
In dit overzicht kun je zien dat het blad met een marge is geplaatst, zijn hoeken zijn afgerond en het projecteert een schaduw (die zijn hoogte vertegenwoordigt). De hele vorm wordt “container” genoemd in het materiaalontwerpsysteem (niet te verwarren met de widgetklasse genaamd container).
Afgezien van de container zijn alle elementen van de vellen optioneel in materiaal. U kunt koptekst, een sticker of een avatar, een ondertiteltekst, scheiders en zelfs puistjes en pictogrammen toevoegen.
Raadpleeg dit artikel in de instructies voor materiaalontwerp om meer te weten te komen over de inhoud van de vellen.
De vellen worden over het algemeen weergegeven in een collectie met andere vellen. Regel ze in de vorm van een collectie in een raster.
6. Maak een verzameling bestanden
Wanneer verschillende vellen op een scherm aanwezig zijn, zijn ze gegroepeerd in een of meer collecties. De bestanden van een verzameling zijn Coplanar: ze hebben allemaal dezelfde hoogte in rust (dat wil zeggen wanneer ze niet zijn geselecteerd of verplaatst, wat we hier niet zullen doen).
Maak een verzameling bestanden
Voorlopig bevindt ons vel zich in het veld van het kinderveld: GridView Grid. Dit leidt tot een grote hoeveelheid geneste code die moeilijk te lezen kan zijn. Laten we dit deel van de code transformeren in een functie waarmee zoveel lege vellen kunnen worden genereerd als nodig is en een lijst met bestanden retourneren.
Maak een privéfunctie boven de functie build () (vergeet niet dat de functies die beginnen met een onderstrepingelijke lijn privé -API’s zijn):
// TODO: maak een verzameling kaarten (102) lijst _BuildGridCards (int cent) < Listcards = List.generate( count, (int index) < return Card( clipBehavior: Clip.antiAlias, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( aspectRatio: 18.0 / 11.0, child: Image.asset('assets/diamond.png'), ), Padding( padding: const EdgeInsets.fromLTRB(16.0, 12.0, 16.0, 8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: const [ Text('Title'), SizedBox(height: 8.0), Text('Secondary Text'), ], ), ), ], ), ); >, ); Retourkaarten; > Wijs de bestanden toe die zijn gegenereerd op het kinderveld van de GridView -widget. vergeet niet om Vervang alle elementen in de GridView -widget door deze nieuwe code ::
// TODO: Voeg een rasterweergave toe (102) Body: GridView.Count (Crossaxiscount: 2, Padding: Const EdgeInsts.Alles (16.0), Childaspectratio: 8.0/9.0, kinderen: _BuildGridCards (10) // vervangen), Noteer het project.
De kaarten zijn aanwezig, maar ze geven op dit moment niets weer. De tijd is gekomen om productgegevens toe te voegen.
Voeg productgegevens toe
De applicatie bevat sommige producten met afbeeldingen, namen en prijzen. Voeg dit toe aan de widgets die al aanwezig zijn in het bestand
Dan in huis.Dart, importeer een nieuw pakket en sommige bestanden die voor een datamodel zijn opgegeven:
Import 'pakket: flutter/materiaal.Dart '; Import 'pakket: intl/intl.Dart '; Model/product importeren.Dart '; Import 'Model/Products_Repository.Dart '; Wijzig ten slotte _BuildGridCards () om productinformatie op te halen en deze gegevens in de bestanden te gebruiken:
// TODO: maak een verzameling kaarten (102) // Vervang deze volledige methodelijst _BuildGridCards (buildContext -context) < Listproducts = ProductsRepository.loadProducts(Category.all); if (products.isEmpty) < return const []; > Definitieve thema -thema = thema.van (context); Final NumberFormat Formatter = NumberFormat.Simplecurrent (Local: Premises.LocalOf (context).toString ()); Retourneerproducten.Kaart ((product) < return Card( clipBehavior: Clip.antiAlias, // TODO: Adjust card heights (103) child: Column( // TODO: Center items on the card (103) crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( aspectRatio: 18 / 11, child: Image.asset( product.assetName, package: product.assetPackage, // TODO: Adjust the box size (102) ), ), Expanded( child: Padding( padding: const EdgeInsets.fromLTRB(16.0, 12.0, 16.0, 8.0), child: Column( // TODO: Align labels to the bottom and center (103) crossAxisAlignment: CrossAxisAlignment.start, // TODO: Change innermost Column (103) children: [ // TODO: Handle overflowing labels (103) Text( product.name, style: theme.textTheme.titleLarge, maxLines: 1, ), const SizedBox(height: 8.0), Text( formatter.format(product.price), style: theme.textTheme.titleSmall, ), ], ), ), ), ], ), ); >)).Tolist (); > MERKTE OP : Wacht voordat u de compilatie en uitvoering start. Er blijft een aanpassing aan te brengen.
Om de tekst te formatteren, gebruiken we themagegevens Thema Van de waarde Buildcontext huidig.
Raadpleeg het artikel over typografie in de instructies voor materiaalontwerp voor meer informatie over het opmaken van de tekst. Ga na deze programmeerworkshop met MDC-103: gebruik van thema’s van materiaalontwerp (kleur, vormen, hoogte en type) om meer te weten te komen over een thema.
Wijzig ook de functie build () om de waarde te verzenden Buildcontext op _BuildGridCards () voordat de compilatie wordt gestart:
// TODO: Voeg een rasterweergave toe (102) Body: GridView.Count (Crossaxiscount: 2, Padding: Const EdgeInsts.Alles (16.0), Childaspectratio: 8.0/9.0, Kinderen: _BuildGridCards (context) // Wijzigcode), Start de hot -applicatie opnieuw op.
U merkt misschien dat we geen verticale ruimte tussen de bestanden toevoegen. Omdat ze vier marges hebben bij de boven- en onderkant.
Noteer het project.
De geproduceerde gegevens worden weergegeven, maar de afbeeldingen zijn omgeven door een onnodige ruimte. Standaard zijn de afbeeldingen getekend met het veld Doos bepaald .Scaledown (in dit geval). Vervang deze waarde door .Fitwidth zodat ze kan inzoomen en de onnodige ruimte kan verwijderen.
Voeg een fit -veld toe: zoals de BoxFit -waarde.Fitwidth:
// TODO: Pas de boxgrootte aan (102) Fit: BoxFit.fitwidth, Onze producten worden nu perfect weergegeven in de applicatie.
7. Gefeliciteerd !
Onze applicatie biedt basisbewerking zodat de gebruiker van het verbindingscherm naar een startscherm kan gaan waar de producten worden weergegeven. Een paar regels code waren voldoende om een hogere applicatiebalk (met een titel en drie knoppen) en bestanden toe te voegen (om de inhoud van onze applicatie te presenteren). Het verkregen startscherm is eenvoudig en functioneel en heeft een basisstructuur en bruikbare inhoud.
De voltooide versie van de MDC-102-applicatie is beschikbaar in de 103-Starter_and_102-Complete Branch .
U kunt uw versie op de pagina vergelijken met de toepassing van deze branch.
Stappen volgen
Met de applicatiebalk, het blad, het tekstveld en de knop bovenaan de pagina, hebben we nu vier hoofdcomponenten van de Material Flutter -bibliotheek gebruikt. Zie de catalogus van materiaalcomponenten voor meer informatie.
Zelfs als onze applicatie perfect werkt, weerspiegelt deze geen merkidentiteit of een bepaald gezichtspunt. In de MDC-103 Workshop: gebruik van thema’s van materiaalontwerp (kleur, vormen, hoogte en type), zullen we de stijl van deze componenten personaliseren om een modern en dynamisch merk uit te drukken.
De realisatie van deze programmeerworkshop vroeg me om een tijd en redelijke inspanningen
Helemaal mee eens
Noch het akkoord, noch akkoord
helemaal niet mee eens
Ik wil materiaalcomponenten blijven gebruiken
Helemaal mee eens
Noch het akkoord, noch akkoord
helemaal niet mee eens
Tenzij anders aangegeven, wordt de inhoud van deze pagina beheerst door een Creative Commons -opdracht 4 -licentie.0, en codemonsters worden beheerst door een Apache 2 -licentie.0. Zie de regels van de Google Developers -site voor meer informatie. Java is een geregistreerd handelsmerk van Oracle en/of zijn aangesloten bedrijven.
