Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Vue trop grande pour l'écran

Sujet résolu
    3 octobre 2014 à 10:48:23

    Bonjour,


    je débute sur android et je suis en train de suivre le tuto Créez des applications pour Android et je suis au chapitre Création d'interfaces graphiques > Widgets plus avancés.

    Dans ce chapitre il y a un exemple d'utilisation des ListView (vue à créer), tout marche au top sauf le fait que l'écran de mon périphérique android (émulateur et téléphone) est trop petit et n'affiche pas toute la page, le bouton "Envoyer" est coupé. J'ai bien essayé de changer mon LinearLayout à la racine de la vue en ScrollView mais apparement il ne faut surtout pas le faire (2 composants à scrollbars :s). Pourriez-vous m'éclairer sur la manière de faire?

    • Partager sur Facebook
    • Partager sur Twitter
      3 octobre 2014 à 12:15:44

      Tu peux nous montrer ton layout qui pose problème ?

      • Partager sur Facebook
      • Partager sur Twitter
        3 octobre 2014 à 13:12:48

        Oui c'est vrai que ça peut être utile!

        <!-- main.xml -->
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                      style="@style/Container"
        >
            <TextView
                style="@style/FillParentWidth"
                android:text="@string/str_genre"
            />
            <ListView
                style="@style/FillParentWidth"
                android:id="@+id/listview_genre"
                android:choiceMode="singleChoice"
            />
            <TextView
                style="@style/FillParentWidth"
                android:text="@string/str_language"
            />
            <ListView
                style="@style/FillParentWidth"
                android:id="@+id/listview_language"
                android:choiceMode="multipleChoice"
            />
            <Button
                style="@style/CenterElement"
                android:id="@+id/button_submit"
                android:text="@string/str_submit"
            />
        </LinearLayout>
        <!-- base-style.xml -->
        <resources>
            <!-- FILL / WRAP -->
            <style name="WrapContent">
                <item name="android:layout_width">wrap_content</item>
                <item name="android:layout_height">wrap_content</item>
            </style>
            <style name="FillParent">
                <item name="android:layout_width">fill_parent</item>
                <item name="android:layout_height">fill_parent</item>
            </style>
            <style name="FillParentWidth">
                <item name="android:layout_width">fill_parent</item>
                <item name="android:layout_height">wrap_content</item>
            </style>
            <style name="FillParentHeight">
                <item name="android:layout_width">wrap_content</item>
                <item name="android:layout_height">fill_parent</item>
            </style>
            
            <!-- LAYOUT -->
            <style name="Container" parent="FillParent">
                <item name="android:orientation">vertical</item>
            </style>
            <style name="RowLayout" parent="FillParentWidth">
                <item name="android:orientation">horizontal</item>
            </style>
            <style name="ColumnLayout" parent="FillParentWidth">
                <item name="android:orientation">vertical</item>
            </style>
            
            <!-- LAYOUT ELEMENTS -->
            <style name="RowElement">
                <item name="android:layout_width">0dp</item>
                <item name="android:layout_height">fill_parent</item>
                <item name="android:layout_weight">1</item>
            </style>
            <style name="ColumnElement">
                <item name="android:layout_width">fill_parent</item>
                <item name="android:layout_height">0dp</item>
                <item name="android:layout_weight">1</item>
            </style>
            <style name="CenterElement" parent="WrapContent">
                <item name="android:layout_gravity">center</item>
            </style>
            
        </resources>

        Resultat

        Comme on peut le voir, le bouton en bas de la vue est à peine visible..

        • Partager sur Facebook
        • Partager sur Twitter
          3 octobre 2014 à 13:32:40

          Tu as plusieurs possibilités pour corriger ce problème.

          Soit tu places ton bouton en tant que footer de ta liste, ça deviendra alors le dernier item de ta liste (d'un point de vue visuel).

          Soit tu utilises un RelativeLayout plutôt qu'un LinearLayout. Tu place alors ton bouton en bas de la vue et la listView au dessus.

          • Partager sur Facebook
          • Partager sur Twitter
            3 octobre 2014 à 14:29:06

            Hmm mais le layout aura la même hauteur non? Donc encore trop grand?
            • Partager sur Facebook
            • Partager sur Twitter
              3 octobre 2014 à 14:53:10

              Si tu mets ton bouton dans le footer de la liste l'utilisateur pourra scroller ;)

              Si tu le mets dans un relativeLayout, l'idée c'est que mettre ton texte en haut, le bouton en bas et la liste entre les 2 en prenant l'espace restant. Le scroll de la liste sera donc entre les composants et il n'y aura pas de problèmes.

              • Partager sur Facebook
              • Partager sur Twitter
                3 octobre 2014 à 16:46:26

                Eh beh, j'ai réussi mais j'en ai bavé :p Depuis le début du cours, j'utilisais les LinearLayout qui ont l'air plus simple a utiliser à première vue, on a pas a dire quel composant va où, au dessous de qui etc. Mais on arrive vite à sa limite on dirait!

                Merci pour ton aide Wapiti89 :D

                Voici mon nouveau layout:

                <!-- main.xml -->
                <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                style="@style/FillParent"
                >
                    <RelativeLayout
                        style="@style/FillParentWidth"
                        android:id="@+id/footer"
                        android:layout_alignParentBottom="true"
                        android:gravity="center"
                    >
                        <Button
                            style="@style/WrapContent"
                            android:id="@+id/button_submit"
                            android:text="@string/str_submit"
                        />
                    </RelativeLayout>
                    <RelativeLayout
                        style="@style/FillParent"
                        android:layout_above="@id/footer"
                    >
                        <TextView
                            style="@style/WrapContent"
                            android:id="@+id/textview_genre"
                            android:text="@string/str_genre"
                        />
                        <ListView
                            style="@style/WrapContent"
                            android:id="@+id/listview_genre"
                            android:layout_below="@id/textview_genre"
                            android:choiceMode="singleChoice"
                        />
                        <TextView
                            style="@style/WrapContent"
                            android:id="@+id/textview_language"
                            android:layout_below="@id/listview_genre"
                            android:text="@string/str_language"
                        />
                        <ListView
                            style="@style/WrapContent"
                            android:id="@+id/listview_language"
                            android:layout_below="@id/textview_language"
                            android:choiceMode="multipleChoice"
                        />
                    </RelativeLayout>
                </RelativeLayout>

                Apercu

                -
                Edité par miccarrer 3 octobre 2014 à 16:59:27

                • Partager sur Facebook
                • Partager sur Twitter

                [Android] Vue trop grande pour l'écran

                × 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