web-dev-qa-db-fra.com

Android - Onglets en bas de l'écran

Je cherchais depuis un jour un moyen d'obtenir mon application Android avec des onglets au bas de l'écran.

Sur le site Web des développeurs Android, dans la section Styles et thèmes, ils semblent avoir l'exemple exact de ce que j'essaie de faire, mais ils n'ont pas jugé nécessaire de fournir un exemple décent de cela:

enter image description here

Tous les conseils/solutions que je trouve sur le Web échouent. Il me semble toujours que la mise en page suivante est très laide et que les onglets sont très mal placés en haut de l'écran, à côté du nom de l'application :-(

enter image description here

Est-ce que quelqu'un a un indice sur la façon d'accomplir cela?

Merci beaucoup d'avance pour vos conseils!

6
Wesley

Je pense que ces exemples vous seront utiles: Android Exemple de barre d’onglet inférieure AND THIS

11
NagarjunaReddy

J'utilise cette disposition pour localiser les onglets en bas de l'écran:

?xml version="1.0" encoding="utf-8"?>
<TabHost
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@Android:id/tabhost"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <LinearLayout
        Android:orientation="vertical"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

        <FrameLayout
            Android:id="@Android:id/tabcontent"
            Android:layout_width="0dp"
            Android:layout_height="0dp"
            Android:layout_weight="0"/>
        <FrameLayout
            Android:id="@+Android:id/realtabcontent"
            Android:background="@drawable/bg_main_app_gradient"
            Android:layout_width="match_parent"
            Android:layout_height="0dp"
            Android:layout_weight="1"/>
        <TabWidget
            Android:id="@Android:id/tabs"
            Android:background="#EAE7E1"
            Android:orientation="horizontal"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_weight="0"/>
    </LinearLayout>
</TabHost>

exemple de code: https://stackoverflow.com/a/23150258/2765497

2
Flinbor
1
Sudhir

Je voulais poster une mise à jour ici. Les barres de navigation inférieures sont maintenant Android Canon. Les principales conséquences de ceci sont:

1) Utilisez les barres de navigation du bas uniquement pour 3-5 icônes. Moins, utilisez tabs . De plus, utilisez des onglets déroulants (page suivante sur le même lien).

2) Évitez d’utiliser une barre de navigation inférieure et des onglets ensemble et assurez-vous que les responsabilités des deux sont clairement séparées si vous le faites.

3) Les barres de navigation inférieures doivent être utilisées pour navigation et non actions (utilisez la variable ActionBar pour celles-ci)

1
sonictt1

Je pense que vous n'avez pas assez cherché votre problème parce que vous utilisez le mauvais mot clé. 

Ce que vous affichez dans la 1ère image en bas de l'application Gmail, il y a 4 menus et le 5ème menu de débordement et la barre supérieure en haut 

Vous pouvez placer un menu au bas en utilisant une simple propriété dans le manifeste; une seule ligne sur l'activité principale qui montre la barre d'action 

Android:uiOptions="splitActionBarWhenNarrow"

Comme ça :

<activity
    Android:name="com.example.HomeActivity"
    Android:screenOrientation="portrait"
        Android:uiOptions="splitActionBarWhenNarrow"
    Android:theme="@style/Theme.Sherlock.Light" >
    <intent-filter>
        <action Android:name="Android.intent.action.MAIN" />

        <category Android:name="Android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
1
Nil

Google ne recommande pas d'avoir des onglets en bas. 

Consultez le guide de modèle de conception officiel suivant sur Android,
Et cherchez la section "Ne pas utiliser les barres d’onglet inférieures"

http://developer.Android.com/design/patterns/pure-Android.html

1
revolutionary

C'est très simple....

Pour une simple barre d'onglets, nous utilisons

<?xml version="1.0" encoding="utf-8"?>
<TabHost
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@Android:id/tabhost"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent">
    <LinearLayout
        Android:orientation="vertical"
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:padding="5dp">
        <TabWidget
            Android:id="@Android:id/tabs"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content" />
        <FrameLayout
            Android:id="@Android:id/tabcontent"
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:padding="5dp" />
    </LinearLayout>
</TabHost>

Mais dans la barre d'onglets inférieure, nous utilisons

**

<?xml version="1.0" encoding="utf-8"?>
<TabHost
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@Android:id/tabhost"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent">
    <RelativeLayout
        Android:layout_height="fill_parent"
        Android:layout_width="fill_parent">
        <TabWidget
            Android:id="@Android:id/tabs"
            Android:layout_alignParentBottom="true"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content" />
        <FrameLayout
            Android:id="@Android:id/tabcontent"
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:padding="5dp" />
    </RelativeLayout>
</TabHost>**

L'essentiel est

 Android:layout_alignParentBottom=”true”;
0
Varinder Deol

Je suis tombé sur votre question en cherchant à faire la même chose, cependant, selon les directives de développement d’androïdes, vous ne devriez jamais avoir de barre d’onglet en bas, car c’est une fonctionnalité iOS ...

Normes de développement Android

0
Jeremie

Vous semblez avoir la barre du bas un peu confuse. Ce n'est pas une barre de tabulation. La barre du bas concerne les actions et non les écrans de navigation. Par exemple, dans la capture d'écran de l'application Gmail que vous avez affichée ci-dessus, la barre du bas permet à l'utilisateur de: composer un e-mail, rechercher, taguer, actualiser et plus. Voir: http://developer.Android.com/design/patterns/actionbar.html

Techniquement, ces boutons permettent de naviguer entre les écrans, mais la barre d’onglet est généralement utilisée pour "changer" d’écran. Par exemple, afficher le contenu par catégorie.

Hmm, mais dans la dernière version de l'application Gmail, ces boutons d'action se trouvent en haut. Soupir...

0
Vasim