web-dev-qa-db-fra.com

Android: Comment remplir RelativeLayout sur toute la largeur de l'écran?

Je crée une Android qui contient un RelativeLayout principal et un LinearLayout.

Maintenant, j'ai ce problème. Lorsque vous faites glisser des éléments vers l'éditeur, par exemple un LinearLayout, il ne s'adapte pas à toute la largeur de l'écran. Comment puis-je rendre cela possible? Voici mon XML:

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:fillViewport="true"
Android:gravity="fill"
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=".MainActivity" >

<LinearLayout
    Android:id="@+id/itemDetailLayout"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_alignParentLeft="true"
    Android:layout_alignParentRight="true"
    Android:layout_alignParentTop="true"
    Android:orientation="vertical" 
    Android:fillViewport="true" >

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content" 
        Android:orientation="horizontal" >

        <ImageView
            Android:id="@+id/itemImage"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:minHeight="40dp"
            Android:minWidth="40dp"
            Android:src="@drawable/ic_launcher" />

        <TextView
            Android:id="@+id/itemName"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_marginLeft="20dp"
            Android:text="Name"
            Android:textAppearance="?android:attr/textAppearanceMedium" />

    </LinearLayout>

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

        <TextView
            Android:id="@+id/itemRecentHigh"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Recent High" />

        <TextView
            Android:id="@+id/itemRecentLow"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Recent Low" />

        <TextView
            Android:id="@+id/itemAverage"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Average" />
    </LinearLayout>
</LinearLayout>

<LinearLayout
    Android:id="@+id/listViewLayout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:layout_below="@+id/itemDetailLayout"
    Android:layout_marginTop="10dp"
    Android:fillViewport="true"
    Android:gravity="fill_horizontal"
    Android:orientation="vertical" >

    <ListView
        Android:id="@+id/searchListView"
        Android:layout_width="match_parent"
        Android:layout_height="fill_parent"
        Android:fillViewport="true" >

    </ListView>
</LinearLayout>

Ajout d'une capture d'écran pour plus d'informations. Ajout d'un fond bleu pour avoir un peu de contraste.

http://i.stack.imgur.com/tPxsE.png

19
MrMartinos

Remplacez ceci:

   Android:layout_width="wrap_content"
   Android:layout_height="wrap_content"

Avec

   Android:layout_width="match_parent"
   Android:layout_height="wrap_content"

dans votre LinearLayout ou supprimez tout le rembourrage du principal RelativeLayout

18
M D

La suppression du rembourrage permet à la disposition linéaire de s'adapter à tout l'écran de l'appareil

3
Holyangel

L'espace entre la partie bleue et la "fin de l'écran". Sur les côtés et au-dessus de la partie où se trouvent le bouton de retour et le bouton d'accueil.

Supprimez le rembourrage de la racine RelativeLayout.

1
laalto

Essayer

<LinearLayout
   Android:layout_width="match_parent"
   Android:layout_height="wrap_content"
   Android:orientation="vertical>
   // Other views within the linear layout
</LinearLayout>

Je suppose que vous utilisez Eclipse. Personnellement, je déteste l'éditeur graphique d'Eclipse et j'écris généralement le code XML directement car travailler avec l'éditeur est une vraie douleur

1
EdmDroid

N'utilisez pas fill_parent car il est obsolète. Au lieu de cela à votre ensemble RelativeLayout

Android:layout_width="fill_parent"
Android:layout_height="fill_parent"

Ensuite, pour afficher la liste que vous souhaitez remplir le reste de l'écran, vous pouvez définir ces balises

Android:layout_width="fill_parent"
Android:layout_height="0dp"
Android:layout_weight="1"

Ce faisant, vous dites au XML que vous voulez que votre ListView fasse ce que fill_parent faisait dans les versions précédentes d'Android.

Sincères amitiés!

0
Isaac Urbina

vous devriez essayer quelque chose comme ceci:

<LinearLayout
    Android:id="@+id/itemDetailLayout"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical" 
     >

...


</LinearLayout>

ce que je veux dire, vous devez le faire:

Android:layout_width="fill_parent"

pour chaque LinearLayout dont vous voulez que sa largeur soit fill_parent.

FILL_PARENT signifie que la vue veut être aussi grande que son parent comme mentionné dans la documentation .

et donnez-moi s'il vous plaît quelques commentaires

J'espère que cela pourra aider .

0
user957654