Partage
  • Partager sur Facebook
  • Partager sur Twitter

ANDROID Layout superposition

projet de chat

Sujet résolu
    9 octobre 2014 à 10:48:36

    Bonjour,

    Je bosse actuellement sur un projet de chat en java déjà fonctionnel sur la version Desktop.

    Je me lance alors sur la version android du client.

    Mon problème concerne la réalisation de l'interface. Voici les éléments que j'aimerai avoir sur ma View:

    Un TextView contenu dans un ScrollView

    Un EditText en bas de l'écran permettant d'écrire le message à envoyer

    Un bouton "envoyer" à droite de cet EditText.

    Voici la version XML de mon design:

    <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:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MyActivity">
    
        <ScrollView
            android:id="@+id/ScrollView01"
            android:layout_width="fill_parent"
            android:layout_height="match_parent">
    
            <TextView
                android:id="@+id/MessagesFields"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="HHHLDFHLDFHIKSDHKSJDGHJSDGJSD
                JSHDJKSDJHKLSDHJKLSDHKSJDKSDNKSDKSDHKLSDHKSDHKSD
                LSIDJILSDHJIKSDHKSDHKDFHKJFHKJDFHBKJDFKJSDFJKSDFDS
                SDIFILDSFJKSDFNDJKSFNDJSKFNBDJKFBDJKFBDSJKFBSDFJKBSDNFJK
                KLSDFNKSJFNDSJKFNDSJKFBSDJKFklfjljfilsdfjilsdfjidsfjsdlifjsdlf
                klsdfjlsdfkdfhueifhdfkbkjfbcjkfbnekfheiufhfuheu;f;iewho;fhef;ewf
                gjghkgjkgjyfhyftjdhgcghmfhmfhmfhgfhfhfhfmhfggjygygugugugukgkg
                uygyugyugukguykfguyfyukfykfuyfuygyugjuguygyugyufgkuygyufgyukfg
                yfgyufgyuguykguyfukyfykufyufyugfukiullhiuhilhiulhiuguyglgyulguy"></TextView>
        </ScrollView>
    
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
    
            <EditText
                android:id="@+id/SendField"
                android:layout_width="230dip"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />
    
            <Button
                android:id="@+id/SendButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:text="Envoyer" />
        </RelativeLayout>
    </RelativeLayout>
    

    Voici le résultat visuel sur mon Nexus 5:

    Comme vous pouvez le constater, lorsqu'on écrit l'EditText et le bouton sont par dessus le ScrollView rendant le tout illisible.

    J'aimerai que ceux-cis restent sous le ScrollView quitte à le réduire encore plus à l'apparition du clavier.

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      9 octobre 2014 à 11:39:26

      Il ne faut jamais préciser des tailles en dur. Si le bouton et l'editText sont bien agencés sur un nexus 5 il y a fort à parier que sur un téléphone avec un écran d'une taille différente ça ne passe pas du tout.

      Le but d'un RelativeLayout est justement de préciser l'agencement des éléments les uns par rapport aux autres. Il faut par exemple dire que ton layout qui contient l'editText et le bouton est en bas de l'écran et que le layout qui contient la TextView est au dessus du layout précédent et prend tout l'espace disponible.

      Un peu de lecture :

      • Partager sur Facebook
      • Partager sur Twitter
        9 octobre 2014 à 12:25:42

        Merci pour ta réponse.

        J'ai simplifié un peu les choses mais le problème reste le même, il y a un chevauchement à l'ouverture du clavier

        (meme image que précédemment)

        <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:paddingBottom="@dimen/activity_vertical_margin"
            android:paddingLeft="@dimen/activity_horizontal_margin"
            android:paddingRight="@dimen/activity_horizontal_margin"
            android:paddingTop="@dimen/activity_vertical_margin"
            tools:context=".MyActivity">
        
            <ScrollView
                android:id="@+id/ScrollView01"
                android:layout_width="fill_parent"
                android:layout_height="match_parent"
                android:layout_weight="0">
        
                <TextView
                    android:id="@+id/MessagesFields"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="HHHLDFHLDFHIKSDHKSJDGHJSDGJSD
                    JSHDJKSDJHKLSDHJKLSDHKSJDKSDNKSDKSDHKLSDHKSDHKSD
                    LSIDJILSDHJIKSDHKSDHKDFHKJFHKJDFHBKJDFKJSDFJKSDFDS
                    SDIFILDSFJKSDFNDJKSFNDJSKFNBDJKFBDJKFBDSJKFBSDFJKBSDNFJK
                    KLSDFNKSJFNDSJKFNDSJKFBSDJKFklfjljfilsdfjilsdfjidsfjsdlifjsdlf
                    klsdfjlsdfkdfhueifhdfkbkjfbcjkfbnekfheiufhfuheu;f;iewho;fhef;ewf
                    gjghkgjkgjyfhyftjdhgcghmfhmfhmfhgfhfhfhfmhfggjygygugugugukgkg
                    uygyugyugukguykfguyfyukfykfuyfuygyugjuguygyugyufgkuygyufgyukfg
                    yfgyufgyuguykguyfukyfykufyufyugfukiullhiuhilhiulhiuguyglgyulguy"></TextView>
            </ScrollView>
        
            <EditText
                android:id="@+id/SendField"
                android:layout_width="230dip"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"/>
        
            <Button
                android:id="@+id/SendButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Envoyer"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"/>
        </RelativeLayout>



        • Partager sur Facebook
        • Partager sur Twitter
          9 octobre 2014 à 13:40:09

          Tu n'utilises toujours pas la puissance du relative layout a savoir positionner les éléments les uns par rapport aux autres. Relis bien les liens que j'ai donné dans mon précédent message ;)

          • Partager sur Facebook
          • Partager sur Twitter
            9 octobre 2014 à 17:51:53

            J'ai simplement utilisé une linear Layout avec une application de poids.

            Merci pour ton aide.

            • Partager sur Facebook
            • Partager sur Twitter
              9 octobre 2014 à 17:55:00

              Ce que veux dire wapiti c'est que tu utilises une valeur en dur dans le layout_width.

              D'autre part je serais toi je mettrais tout dans un LinearLayout, avec un alignement vertical, mon scroll view, puis l'edit text et le bouton dans un linearLayout aligné horizontalement.

              • Partager sur Facebook
              • Partager sur Twitter
                14 juillet 2019 à 17:36:41

                Rolandl Merci beaucoup tu m'a permis de résoudre un problème que je traite pendant 2 ans , merci infiniment à toi.

                Un petit conseil a tous ceux-là qui lisent des cours: lisez attentivement pour mieux comprendre c'est que vous faite .

                • Partager sur Facebook
                • Partager sur Twitter
                #RTPnoVanity

                ANDROID Layout superposition

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown