web-dev-qa-db-fra.com

Comment ajouter un menu du bas à l'activité Android

J'essaie d'ajouter une autre barre d'action ou un autre menu au bas de la présentation de mon activité et de conserver la barre d'action supérieure.

Quelque chose comme ça :

 My Layout

Voici ma mise en page:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
tools:context="com.example.yasser.version6.PublierActivity">


<include
    Android:id="@+id/toolbar"
    layout="@layout/toolbar" />



<RelativeLayout
     Android:layout_width="fill_parent"
     Android:layout_height="match_parent"
     >


    <LinearLayout
        Android:layout_width="fill_parent"
        Android:id="@+id/user"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal"
        Android:weightSum="1">


        <ImageView
            Android:layout_width="40dp"
            Android:layout_height="40dp"
            Android:layout_gravity="center"
            Android:layout_margin="4dp"
            Android:id="@+id/profil_image"
            Android:layout_alignParentTop="true"
            Android:layout_alignParentRight="true"
            Android:layout_alignParentEnd="true"
            Android:layout_marginRight="218dp"
            Android:layout_marginEnd="218dp" />

        <EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:inputType="textMultiLine|textCapSentences"
            Android:ems="10"
            Android:background="#00000000"
            Android:layout_margin="4dp"
            Android:hint="Écriver quelque chose..."
            Android:id="@+id/publication_text"
            Android:maxLength="150"
            Android:textSize="15dp"
            Android:maxLines="3"
            Android:layout_alignParentTop="true"
            Android:layout_alignParentLeft="true"
            Android:layout_alignParentStart="true">
            <requestFocus />
        </EditText>


    </LinearLayout>




    <ImageView
        Android:layout_width="fill_parent"
        Android:layout_height="@dimen/image_size"
        Android:id="@+id/publication_image"
        Android:layout_weight="1"
        Android:padding="0dp"
        Android:background="@drawable/default_image"
        Android:layout_marginTop="5dp"
        Android:scaleType="fitXY"
        Android:layout_below="@+id/user" />

</RelativeLayout>

J'ai essayé d'ajouter un RelativeLayout personnalisé qui ressemble presque à une barre d'action, mais la barre d'outils affiche tout.

12
Stranger B.

Création d'une barre d'outils inférieure personnalisée

J'ai déjà créé une application simple qui devrait vous montrer comment commencer

Créer un ViewGroup personnalisé

Voici mon fichier de mise en page activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:padding="0dp"
    tools:context="com.example.piotr.myapplication.MainActivity">

    <LinearLayout
        Android:id="@+id/show_pdf"
        Android:layout_width="match_parent"
        Android:layout_height="40dp"
        Android:layout_alignParentBottom="true"
        Android:layout_centerHorizontal="true"
        Android:background="@color/primary_material_light"
        Android:orientation="horizontal">

        <ImageButton
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"
            Android:src="@drawable/abc_ic_menu_cut_mtrl_alpha"/>

        <ImageButton
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"
            Android:src="@drawable/abc_ic_menu_copy_mtrl_am_alpha"/>

        <ImageButton
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"
            Android:src="@drawable/abc_ic_menu_selectall_mtrl_alpha"/>

        <ImageButton
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"
            Android:src="@drawable/abc_ic_menu_paste_mtrl_am_alpha"/>

        <ImageButton
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"
            Android:src="@drawable/abc_ic_menu_share_mtrl_alpha"/>

        <ImageButton
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"
            Android:src="@drawable/abc_ic_menu_selectall_mtrl_alpha"/>

        <ImageButton
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"
            Android:src="@drawable/abc_ic_menu_moreoverflow_mtrl_alpha"/>
    </LinearLayout>

    <EditText
        Android:id="@+id/editText"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:layout_centerHorizontal="true"
        Android:layout_marginTop="75dp"
        Android:ems="10"
        Android:inputType="textPersonName"
        Android:text="Name"/>
</RelativeLayout>

Comme vous pouvez le constater, mon parent ViewGroup est RelativeLayout, ce qui me permet simplement de créer une vue au bas de l'écran. 

Notez que je mets la mise en page à zéro (je pense: mettre la marge à 0 ici n'est pas nécessaire, le même effet). Si vous le changez, la barre d’outils n’utilisera pas toute la largeur et ne collera pas avec le bas de l’écran.

Ensuite, j'ai ajouté une disposition linéaire avec une hauteur codée en dur, à savoir:

          Android:layout_height="40dp"

Je le voulais, ma barre d’outils inférieure prendrait toute la largeur disponible, donc je l’ai définie comme match_parent.

Ensuite, j'ai ajouté des vues ImageButton avec des images de la bibliothèque Android.

Là vous avez deux possibilités:

  • si vous voulez vraiment avoir une barre d'outils comme dans l'exemple ci-dessus, supprimez-la dans chaque ImageButton, affichez cette ligne:

          Android:layout_weight="1"
    

Une fois les poids et les boutons supprimés, vous obtenez une vue assez similaire à celle attendue:

  • si vous voulez prendre toute la largeur et utiliser chaque bouton de même taille dans votre projet weight comme dans cet exemple de mine.

Passons maintenant à mon AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.example.piotr.myapplication"
          xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <application
        Android:allowBackup="true"
        Android:icon="@mipmap/ic_launcher"
        Android:label="@string/app_name"
        Android:supportsRtl="true"
        Android:theme="@style/AppTheme">
        <activity
            Android:name=".MainActivity"
            Android:windowSoftInputMode="stateVisible|adjustResize">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN"/>

                <category Android:name="Android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

Dans ce fichier, j’avais ajouté car vous ne pouvez voir qu’une seule ligne supplémentaire:

         Android:windowSoftInputMode="stateVisible|adjustResize">

pour vous assurer que le clavier de l'appareil ne cachera pas ma barre d'outils inférieure personnalisée.

Si vous avez des questions, n'hésitez pas à demander. Je leur répondrais le plus rapidement possible.

J'espère que ça aide

16
piotrek1543

Autant que je sache, il n'y a pas d'option pour déplacer la ActionBar entièrement vers le bas. Mais il est toujours possible d'afficher quelques éléments en bas. pour cela vous devez faire ceci:

  • Ajoutez simplement Android:uiOptions="splitActionBarWhenNarrow" à votre balise activity dans le AndroidManifest.xml comme ceci ...

    <activity Android:name=".MainActivity" Android:uiOptions="splitActionBarWhenNarrow">

Vous pouvez en lire plus ici et ici

J'espère que ça aide. :)

4
Amit Desale

J'ai créé une barre inférieure personnalisée avec la hauteur exacte de? Attr/actionBarSize et `layout_alignParentBottom =" true "pour la mettre en bas.

<LinearLayout
    Android:id="@+id/bottombar"
    Android:layout_width="fill_parent"
    Android:layout_height="?attr/actionBarSize"
    Android:layout_alignParentBottom="true"
    Android:background="#FFFFFF"
    Android:weightSum="30"
    Android:orientation="horizontal">

    <ImageButton
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginLeft="10dp"
        Android:layout_gravity="center"
        Android:background="@Android:color/transparent"
        Android:src="@drawable/iconcamera"/>
    <ImageButton
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginLeft="10dp"
        Android:layout_gravity="center"
        Android:background="@Android:color/transparent"
        Android:src="@drawable/shape"/>
</LinearLayout>`

Maintenant, allez à Manifest.xml et dans votre balise d'activité 

Android:windowSoftInputMode="adjustResize"

Cela redimensionnera la disposition lors de l’ouverture du clavier.

2
Jony

C'est une barre d'action divisée. Il est disponible pour les appareils dotés d’une largeur d’écran de 400dp. <Pour activer la barre d’action divisée, ajoutez simplement uiOptions = "splitActionBarWhenNarrow" à votre élément ou à votre élément manifest.

Edit: La deuxième image n’est en effet pas une barre d’action divisée. Ce ne sont que des boutons avec l'attribut buttonBarButtonStyle. Regardez dans ceci ici.

0
Er. Rakesh Prajapat

Vous pouvez simplement ajouter une barre d’outils et la définir en bas pour créer votre propre disposition personnalisée.

 <Android.support.v7.widget.Toolbar Android:id="@+id/toolbar"
        Android:layout_width="match_parent" Android:layout_height="?attr/actionBarSize"
        Android:background="#333333" app:popupTheme="@style/AppTheme.PopupOverlay"
        Android:layout_alignParentBottom="true"

        >
        <LinearLayout
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:orientation="vertical"
            Android:layout_gravity="left">

            <Button
                Android:layout_width="50dp"
                Android:layout_height="50dp"
                Android:background="@drawable/folder"
                Android:id="@+id/pdfViewer"/>

        </LinearLayout>
        <LinearLayout
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:orientation="vertical"
            Android:layout_gravity="center"
            >
            <Button
                Android:layout_width="60dp"
                Android:layout_height="60dp"
                Android:background="@drawable/cameranew"
                Android:id="@+id/btn"
                />
        </LinearLayout>
       </Android.support.v7.widget.Toolbar> 
0
user2523529