Comment puis-je créer une table avec des bordures dans Android?

J'utilise une disposition de table pour afficher les données sous forme de tableau, mais je veux une table avec des colonnes et des lignes définies par l'utilisateur avec des bordures. Suggestions?

  • Créer TypeToken pour type argument de super type générique
  • Limite de page hors fenêtre de ViewPager
  • Définir le style sur TableRow dans Android
  • Unité de test d'un récepteur de diffusion?
  • Les périphériques «Visual Studio Emulator pour Android» ne sont pas répertoriés dans le moniteur de périphérique Android
  • Android Studio et Gradle - build échoue
  • Retrofit-IllegalArgumentException: url inattendue
  • (Ionic 2) Une erreur s'est produite en essayant de revenir à Cordova-lib execution: TypeError: Impossible de lire la propriété 'then' of undefined
  • Gestion des erreurs de certificat dans Android Webview et effacement des certifications de certification
  • Obtenez l'étiquette de référence Google Analytics Android
  • Android: EXCEPTION FATALE: AdWorker # 1 java.lang.NoSuchMethodError: java.io.IOException. <Init>
  • Blocage de sites Web sur Android
  • 16 Solutions collect form web for “Comment puis-je créer une table avec des bordures dans Android?”

    Ma solution pour ce problème est de mettre une ressource xml drawable sur le champ d'arrière-plan de chaque cellule. De cette façon, vous pouvez définir une forme avec la bordure souhaitée pour toutes les cellules. Le seul inconvénient est que les limites des cellules extrêmes ont la moitié de la largeur des autres, mais ce n'est pas grave si votre table remplit l'écran entier.

    Un exemple:

    Drawable / cell_shape.xml

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape= "rectangle" > <solid android:color="#000"/> <stroke android:width="1dp" android:color="#ff9"/> </shape> 

    Layout / my_table.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TableRow android:id="@+id/tabla_cabecera" android:layout_width="match_parent" android:layout_height="match_parent"></TableRow> <TableLayout android:id="@+id/tabla_cuerpo" android:layout_width="match_parent" android:layout_height="match_parent"> <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> </TableRow> <TableRow android:id="@+id/tableRow4" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/cell_shape" android:padding="5dp" android:text="TextView" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> </TableRow> </TableLayout> </LinearLayout> 

    Modifier: un exemple

    Entrez la description de l'image ici

    Edit2: un autre exemple (avec plus d'éléments: circonscrire les coins, les gradients …) Entrez la description de l'image ici

    J'ai expliqué ce problème avec plus de détails dans http://blog.intelligenia.com/2012/02/programacion-movil-en-android.html#more . C'est en espagnol mais il y a des codes et des images de tables plus complexes.

    Je suis d'accord avec Brad. C'était une réponse affreuse. La documentation Android indique que les conteneurs TableLayout n'indiquent pas les lignes de bordure, donc les envoyer sur le site Android ne les aidera pas un peu. J'ai pu trouver une solution "sale" sur droidnova, qui consiste à définir une couleur d'arrière-plan pour le TableLayout, puis à définir une couleur d'arrière-plan différente pour le TableRow et à ajouter layout_margin à la ligne. Je n'apprécie pas cette solution, mais ça marche pour les bordures de ligne. Je suppose que vous pourriez faire la même chose avec les éléments composant chaque élément "cellule", mais je n'ai pas vérifié.

    Un exemple similaire à celui de DroidNova:

     <TableLayout android:background="#000000" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TableRow android:background="#FFFFFF" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="1dp"> ... </TableRow> </TableLayout> 

    Si vous essayez juste d'avoir une ligne entre les lignes (par exemple, juste au-dessus d'une rangée "Total"), il existe une solution simple: ajoutez simplement un TableRow avec une couleur d'arrière-plan et un layout_height spécifique tel que ceci:

     <TableRow android:layout_height="1px" android:background="#BDBDBD"> <TextView android:layout_span="2" android:layout_height="1px" android:layout_width="fill_parent" android:text=""> </TextView> </TableRow> 

    Définissez android:layout_height="1px" ou si vous voulez que la bordure soit épaisse. Remplissez autant de colonnes TextView vides que vous devez associer au reste de votre table, ou utilisez simplement une avec android:layout_span comme je l'ai démontré.

    La sortie ressemblera à ceci:

    Bord de table démontré

    Si vous essayez d'ajouter des bordures plus compliquées, les autres réponses déjà postées sont plus appropriées.

    Vous pouvez également le faire de manière progamatique, plutôt que via xml, mais c'est un peu plus "hacking". Mais donne un homme sans options et vous ne lui laissez aucun choix: p .. Voici le code:

     TableLayout table = new TableLayout(this); TableRow tr = new TableRow(this); tr.setBackgroundColor(Color.BLACK); tr.setPadding(0, 0, 0, 2); //Border between rows TableRow.LayoutParams llp = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); llp.setMargins(0, 0, 2, 0);//2px right-margin //New Cell LinearLayout cell = new LinearLayout(this); cell.setBackgroundColor(Color.WHITE); cell.setLayoutParams(llp);//2px border on the right for the cell TextView tv = new TextView(this); tv.setText("Some Text"); tv.setPadding(0, 0, 4, 3); cell.addView(tv); tr.addView(cell); //add as many cells you want to a row, using the same approach table.addView(tr); 

    Ce que je voulais, c'est une table comme celle-ci

    Image de table avec diviseurs verticaux

    J'ai ajouté ceci dans mes styles.xml :

      <style name="Divider"> <item name="android:layout_width">1dip</item> <item name="android:layout_height">match_parent</item> <item name="android:background">@color/divider_color</item> </style> <style name="Divider_invisible"> <item name="android:layout_width">1dip</item> <item name="android:layout_height">match_parent</item> </style> 

    Ensuite, dans ma mise en page de la tablette :

      <TableLayout android:id="@+id/table" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:stretchColumns="*" > <TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent" android:layout_height="match_parent" android:background="#92C94A" > <TextView android:id="@+id/textView11" android:paddingBottom="10dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="10dp" /> <LinearLayout android:layout_width="1dp" android:layout_height="match_parent" > <View style="@style/Divider_invisible" /> </LinearLayout> <TextView android:id="@+id/textView12" android:paddingBottom="10dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="10dp" android:text="@string/main_wo_colon" android:textColor="@color/white" android:textSize="16sp" /> <LinearLayout android:layout_width="1dp" android:layout_height="match_parent" > <View style="@style/Divider" /> </LinearLayout> <TextView android:id="@+id/textView13" android:paddingBottom="10dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="10dp" android:text="@string/side_wo_colon" android:textColor="@color/white" android:textSize="16sp" /> <LinearLayout android:layout_width="1dp" android:layout_height="match_parent" > <View style="@style/Divider" /> </LinearLayout> <TextView android:id="@+id/textView14" android:paddingBottom="10dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="10dp" android:text="@string/total" android:textColor="@color/white" android:textSize="16sp" /> </TableRow> <!-- display this button in 3rd column via layout_column(zero based) --> <TableRow android:id="@+id/tableRow2" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#6F9C33" > <TextView android:id="@+id/textView21" android:padding="5dp" android:text="@string/servings" android:textColor="@color/white" android:textSize="16sp" /> <LinearLayout android:layout_width="1dp" android:layout_height="match_parent" > <View style="@style/Divider" /> </LinearLayout> .......... ....... ...... 

    Pour faire 1dp collapse-border autour de chaque cellule sans écrire un code java et sans créer une autre disposition xml avec <shape...> tag, vous pouvez essayer cette solution:

    Dans <TableLayout...> add android:background="#CCC" et android:paddingTop="1dp" et android:stretchColumns="0"

    Dans <TableRow...> add android:background="#CCC" et android:paddingBottom="1dp" et android:paddingRight="1dp"

    Dans chaque cellule / enfant dans TableRow, c'est-à-dire <TextView...> add android:background="#FFF" et android:layout_marginLeft="1dp"

    Il est très important de suivre les rembourrages et les marges comme décrit. Cette solution dessine une propriété de bordure-effondrement à la frontière 1dp dans (X) HTML / CSS.

    La couleur d'arrière-plan dans <TableLayout...> et <TableRow...> représente une couleur de ligne de bordure et un arrière-plan dans <TextView...> remplit une cellule de table. Vous pouvez mettre du rembourrage dans les cellules si nécessaire.

    Un exemple est ici:

     <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#CCC" android:paddingTop="1dp" android:stretchColumns="0" android:id="@+id/tlTable01"> <TableRow android:background="#CCC" android:paddingBottom="1dp" android:paddingRight="1dp"> <TextView android:layout_marginLeft="1dp" android:padding="5dp" android:background="#FFF" android:text="Item1"/> <TextView android:layout_marginLeft="1dp" android:padding="5dp" android:background="#FFF" android:gravity="right" android:text="123456"/> </TableRow> <TableRow android:background="#CCC" android:paddingBottom="1dp" android:paddingRight="1dp"> <TextView android:layout_marginLeft="1dp" android:padding="5dp" android:background="#FFF" android:text="Item2"/> <TextView android:layout_marginLeft="1dp" android:padding="5dp" android:background="#FFF" android:gravity="right" android:text="456789"/> </TableRow> </TableLayout> 

    Entrez la description de l'image ici

    Ici, j'ai conçu la liste par l'image de conception suivante. Mon nom de fichier listitem est Propertylistitem.xml et cellborder.xml est utilisé comme forme desserrée pour la sortie de la cellule, sont affichés dans cette image. Le code nécessaire que j'ai ajouté ici.

    FileName: propertylistitem.xml

     <TableLayout... > <TableRow... > <TextView ... android:background="@drawable/cellborder" android:text="Amount"/> </TableRow> <TableRow... > <TextView... android:background="@drawable/cellborder" android:text="5000"/> </TableRow> </TableLayout> 

    Nom de fichier: cellborder.xml Ici, je veux juste que la bordure dans mon design, donc j'ai mis le commentaire sur la balise de couleur unie.

     <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <!-- <solid android:color="#dc6888"/> --> <stroke android:width="0.1dp" android:color="#ffffff" /> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> </shape> 

    Après une longue recherche et des heures d'essai, c'est le code le plus simple que je puisse faire:

     ShapeDrawable border = new ShapeDrawable(new RectShape()); border.getPaint().setStyle(Style.STROKE); border.getPaint().setColor(Color.BLACK); tv.setBackground(border); content.addView(tv); 

    TV est un TextView avec un texte simple et le contenu est mon conteneur (LinearLayout dans ce cas). C'est un peu plus facile.

    Que diriez-vous de surpasser la méthode OnDraw, puis de la peinture des lignes sur la toile?

     for(int i = 0; i < rows; i++) { canvas.drawLine(0, i * m_cellHeight, m_totalWidth, i * m_cellHeight, paint); } for(int i = 0; i < m_columns; i++){ canvas.drawLine(i* m_cellWidth, 0, i * m_cellWidth, m_cellHeight * rows, paint); } 

    J'ai utilisé cette solution: dans TableRow , j'ai créé pour chaque cellule LinearLayout avec une ligne verticale et une cellule réelle, et après chaque TableRow , j'ai ajouté une ligne horizontale.

    Regardez le code ci-dessous:

     <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:shrinkColumns="1"> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <LinearLayout android:orientation="horizontal" android:layout_height="match_parent" android:layout_weight="1"> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_height="match_parent" android:layout_weight="1"> <View android:layout_height="match_parent" android:layout_width="1dp" android:background="#BDCAD2"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center"/> </LinearLayout> </TableRow> <View android:layout_height="1dip" android:background="#BDCAD2" /> <!-- More TableRows --> </TableLayout> 

    J'espère que cela aidera.

    Voici un excellent moyen de résoudre ce problème:

    Créez un rectangle dessiné avec des coins arrondis comme ceci:

     <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <stroke android:width="2dp" android:color="#888888"/> <corners android:bottomRightRadius="6dp" android:bottomLeftRadius="6dp" android:topLeftRadius="6dp" android:topRightRadius="6dp"/> </shape> 

    Enregistrez-le dans le dossier drawable avec le nom rounded_border.xml

    Ensuite, créez une disposition relative qui utilise le rounded_border comme arrière-plan comme ceci:

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/rounded_border"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RelativeLayout> 

    Enregistrez cela dans votre dossier de mise en page et nommez-le table_with_border.xml

    Alors, chaque fois que vous avez besoin d'un tel tableau, tirez-le dans une vue en utilisant la syntaxe d'inclusion comme ceci:

     <include android:id="@+id/rounded_table" android:layout_width="match_parent" android:layout_height="wrap_content" layout="@layout/table_with_border" /> 

    Vous voudrez probablement ajouter un certain espacement autour des bords – alors simplement enveloppez l'inclure dans un LinearLayout et ajoutez un peu de rembourrage autour des bords.

    Un moyen simple et facile d'obtenir une jolie bordure autour d'une table.

    Le coup doublé sur les sections middel, j'ai utilisé cette liste de couches dessiné:

     <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@color/grey" /> </shape> </item> <item android:top="1dp" android:left="1dp" android:bottom="1dp" android:right="1dp"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@color/lightgrey" /> </shape> </item> </layer-list> 

    Je pense qu'il est préférable de créer 1px neuf-patch image, et utiliser showDividers attribut dans TableRow et TableLayout car ils sont à la fois LinearLayouts

    Une limite entre les cellules est doublée dans les réponses ci-dessus. Donc, vous pouvez essayer cette solution:

     <item android:left="-1dp" android:top="-1dp"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#fff"/> <stroke android:width="1dp" android:color="#ccc"/> </shape> </item> 

    Une autre solution consiste à utiliser des mises en page linéaires et à définir des divisions entre des lignes et des cellules comme ceci:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <View android:layout_width="match_parent" android:layout_height="1px" android:background="#8000"/> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"> <View android:layout_width="@dimen/border" android:layout_height="match_parent" android:background="#8000" android:layout_marginTop="1px" android:layout_marginBottom="1px"/> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" ></LinearLayout> <View android:layout_width="@dimen/border" android:layout_height="match_parent" android:background="#8000" android:layout_marginTop="1px" android:layout_marginBottom="1px"/> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"></LinearLayout> <View android:layout_width="@dimen/border" android:layout_height="match_parent" android:background="#8000" android:layout_marginTop="1px" android:layout_marginBottom="1px"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1px" android:background="#8000"/> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"> <View android:layout_width="@dimen/border" android:layout_height="match_parent" android:background="#8000" android:layout_marginTop="1px" android:layout_marginBottom="1px"/> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" ></LinearLayout> <View android:layout_width="@dimen/border" android:layout_height="match_parent" android:background="#8000" android:layout_marginTop="1px" android:layout_marginBottom="1px"/> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"></LinearLayout> <View android:layout_width="@dimen/border" android:layout_height="match_parent" android:background="#8000" android:layout_marginTop="1px" android:layout_marginBottom="1px"/> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1px" android:background="#8000"/> </LinearLayout> 

    C'est une solution sale, mais c'est simple et fonctionne aussi avec un arrière-plan transparent et des bordures.

    Je sais que c'est une vieille question … de toute façon … si vous voulez garder votre xml agréable et simple, vous pouvez étendre TableLayout et remplacer dispatchDraw pour faire un dessin personnalisé.

    Voici une implémentation rapide et sale qui trace un rectangle autour de la table, ainsi que des barres horizontales et verticales:

     public class TableLayoutEx extends TableLayout { private Paint linePaint = null; private Rect tableLayoutRect; public TableLayoutEx(Context context) { super(context); } public TableLayoutEx(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); float strokeWidth = this.getContext().getResources().getDisplayMetrics().scaledDensity * 1; linePaint = new Paint(0); linePaint.setColor(0xff555555); linePaint.setStrokeWidth(strokeWidth); linePaint.setStyle(Paint.Style.STROKE); Rect rect = new Rect(); int paddingTop= getPaddingTop(); this.getDrawingRect(rect); tableLayoutRect = new Rect(rect.left, rect.top + paddingTop, rect.right, rect.bottom); } @Override protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); Rect rect = new Rect(); if (linePaint != null) { canvas.drawRect(tableLayoutRect, linePaint); float y = tableLayoutRect.top; for (int i = 0; i < getChildCount() - 1; i++) { if (getChildAt(i) instanceof TableRow) { TableRow tableRow = (TableRow) getChildAt(i); tableRow.getDrawingRect(rect); y += rect.height(); canvas.drawLine(tableLayoutRect.left, y, tableLayoutRect.right, y, linePaint); float x = tableLayoutRect.left; for (int j = 0; j < tableRow.getChildCount() - 1; j++) { View view = tableRow.getChildAt(j); if (view != null) { view.getDrawingRect(rect); x += rect.width(); canvas.drawLine(x, tableLayoutRect.top, x, tableLayoutRect.bottom, linePaint); } } } } } } } 

    Exemple xml avec le texte d'emballage de la troisième colonne:

     <com.YOURPACKAGE.TableLayoutEx android:layout_width="match_parent" android:layout_height="wrap_content" android:shrinkColumns="2" android:paddingTop="6dp"> <TableRow> <TextView android:text="@string/my_text_0_0" android:padding="@dimen/my_padding"/> <TextView android:text="@string/my_text_0_1" android:padding="@dimen/my_padding"/> <TextView android:text="@string/my_text_0_2_to_wrap" android:padding="@dimen/my_padding"/> </TableRow> <!--more table rows here--> </com.YOURPACKAGE.TableLayoutEx> 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.