Android: tabs au BAS

J’ai vu des bavardages à ce sujet, mais rien de précis. Est-il possible de placer les tabs dans un TabWidget au bas de l’écran? Si c’est le cas, comment?

J’ai essayé ce qui suit, mais n’a pas fonctionné:

a) définir le tableau sous le framelayout
b) mettre la gravité du tableau à “bas”

Merci! llappall

Voici la solution la plus simple, la plus robuste et la plus évolutive pour obtenir des tabs au bas de l’écran.

  1. Dans votre LinearLayout vertical, placez le FrameLayout au-dessus de TabWidget
  2. Définissez layout_height sur wrap_content sur FrameLayout et TabWidget.
  3. Définir l’ android:layout_weight="1"
  4. Définir l’ android:layout_weight="0"
  5. Définissez l’ android:layout_marginBottom="-4dp" (pour supprimer le diviseur du bas)

Code complet:

        

Essayez-le;) Regardez simplement le contenu de FrameLayout (@ id / tabcontent), car je ne sais pas comment il va se comporter en cas de défilement … Dans mon cas, cela fonctionne car j’ai utilisé ListView comme contenu de mes tabs . 🙂 J’espère que cela aide.

        

Il existe un moyen de supprimer la ligne.

1) Suivez ce tutoriel: android-tabs-with-fragments

2) Ensuite, appliquez le changement RelativeLayout suggéré par Leaudro ci-dessus (appliquez les accessoires de présentation à tous les FrameLayouts).

Vous pouvez également append un ImageView au fichier tab.xml dans l’élément # 1 et obtenir un look très similaire à celui de l’iPhone dans les tabs.

Voici une capture d’écran de ce sur quoi je travaille actuellement. J’ai encore du travail à faire, principalement faire un sélecteur pour les icons et assurer une dissortingbution horizontale égale, mais vous avez l’idée. Dans mon cas, j’utilise des fragments, mais les mêmes principes devraient s’appliquer à un onglet standard.

entrer la description de l'image ici

Je ne sais pas si cela fonctionnera pour toutes les versions d’Android (en particulier celles avec des éléments d’interface utilisateur personnalisés), mais j’ai pu supprimer la barre grise en ajoutant

  android:layout_marginBottom="-3dp" 

au XML TabWidget …

Pour tous ceux qui essaient de supprimer la ligne de séparation du tabWidget, voici un exemple de projet (et son tutoriel respectif), qui fonctionne parfaitement pour personnaliser les tabs et supprimer ainsi les problèmes lorsque les tabs sont en bas. Projet Eclipse: android-custom-tabs ; Explication originale: blog ; J’espère que cela a aidé.

Il existe deux manières d’afficher des tabs au bas d’une activité de tabulation.

  1. Utiliser la mise en page relative
  2. Utiliser l’atsortingbut Layout_weight

Veuillez vérifier le lien pour plus de détails .

         

Ce n’est peut-être pas exactement ce que vous cherchez (ce n’est pas une solution “facile” pour envoyer vos tabs au bas de l’écran) mais c’est néanmoins une solution alternative intéressante que j’aimerais vous signaler:

ScrollableTabHost est conçu pour se comporter comme TabHost, mais avec une vue de défilement supplémentaire pour adapter plus d’éléments …

peut-être creuser dans ce projet open-source, vous trouverez une réponse à votre question. Si je vois quelque chose de plus facile, je reviendrai à vous.

J’avais le même problème avec les tabs Android lors de la tentative de les placer au bas de l’écran. Mon scénario était de ne pas utiliser un fichier de mise en page et de créer les tabs dans le code, je cherchais également à tirer des activités de chaque onglet qui semblait un peu trop complexe en utilisant d’autres approches, voici l’exemple de code pour résoudre le problème:

append-tabs-in-android-and-placement-les

Oui, voir: link , mais il a utilisé des dispositions XML, pas des activités pour créer un nouvel onglet, alors mettez son code XML (définissez paddingTop pour FrameLayout – 0px) et écrivez le code:

 public class SomeActivity extends ActivityGroup { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TabHost tab_host = (TabHost) findViewById(R.id.edit_item_tab_host); tab_host.setup(this.getLocalActivityManager()); TabSpec ts1 = tab_host.newTabSpec("TAB_DATE"); ts1.setIndicator("tab1"); ts1.setContent(new Intent(this, Registration.class)); tab_host.addTab(ts1); TabSpec ts2 = tab_host.newTabSpec("TAB_GEO"); ts2.setIndicator("tab2"); ts2.setContent(new Intent(this, Login.class)); tab_host.addTab(ts2); TabSpec ts3 = tab_host.newTabSpec("TAB_TEXT"); ts3.setIndicator("tab3"); ts3.setContent(new Intent(this, Registration.class)); tab_host.addTab(ts3); tab_host.setCurrentTab(0); } 

}

Je recommande d’utiliser ce code pour un travail stable, il est optimisé pour les fragments nesteds dans l’onglet (par exemple, MapFragment nested) et testé sur «ne pas conserver les activités»: https://stackoverflow.com/a/23150258/2765497