2015-07-30 1 views
1

J'ai fait une mise en page pour ma listview dans un projet Android. C'est comme ça;Fonctionnement de GridLayout lors de la spécification des colonnes et des rowspan

enter image description here

J'ai lu et fait des recherches sur d'autres échantillons de GridLayout et je l'ai écrit xml en conformité avec j'ai.

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/card_background" 
    android:columnCount="30" 
    android:orientation="horizontal" 
    android:rowCount="6" 
    android:id="@+id/grid_layout_notification"> 

    <com.ei.dizitakip.android.CircledNetworkImageView 
     android:id="@+id/fancy_notification_thumbnail" 
     android:layout_columnSpan="5" 
     android:layout_rowSpan="6" 
     /> 

    <TextView 
     android:layout_columnSpan="25" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:id="@+id/fancy_title" 
     android:textColor="@color/color_primary_dark" /> 

    <ImageView 
     android:layout_columnSpan="2" 
     android:id="@+id/fancy_season_icon" 
     android:src="@mipmap/season_icon" 
     android:background="@android:color/transparent" 
     /> 

    <TextView 
     android:layout_columnSpan="10" 
     android:id="@+id/fancy_status_text" 
     android:gravity="center_vertical" /> 

    <ImageView 
     android:layout_columnSpan="2" 
     android:id="@+id/fancy_domain_icon" 
     android:src="@mipmap/www_icon" 
     android:background="@android:color/transparent" 
     /> 

    <TextView 
     android:layout_columnSpan="11" 
     android:id="@+id/fancy_domain_text" 
     android:gravity="center_vertical" /> 

</GridLayout> 

Comme vous avez réalisé que le code est loin de la conception. Qu'est-ce qui me manque à propos de GridLayouts? C'est la première fois que je l'utilise et j'ai utilisé la même approche avec layout_weight de LinearLayout. Vraiment apprécié tous les échantillons de code, approche ou technique.

+0

Spécifiez votre question. Considérez votre mise en page comme une table. Avec columnspan vous indiquez à la mise en page le nombre de colonnes que l'élément de vue doit prendre pour être affiché, avec rowspan vous définissez le nombre de lignes que la vue doit prendre dans votre table. – Sonic

+0

En fait, je pense de la même manière. Mais, ça ne fonctionne pas de la même façon que je pense :) Je ne comprends pas, peut-être que les grilles n'ont pas la même taille. Pourriez-vous fournir un échantillon comme dans l'exemple ci-dessus? –

+0

Que voulez-vous dire par "ça ne marche pas"? Fondamentalement, cela fonctionne. Afin d'obtenir le design comme il est dans votre image, vous devez spécifier des marges et des paddings, en particulier l'image de gauche devrait avoir "android: layout_gravity =" center "" – Sonic

Répondre

2

Vous devez utiliser android: layout_gravity pour spécifier la taille d'une grille. Ceci est un exemple du blog Android Developers

Pour réaliser ce design;

enter image description here

Code

;

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 

     android:layout_width="match_parent" 
     android:layout_height="match_parent" 

     android:useDefaultMargins="true" 
     android:alignmentMode="alignBounds" 
     android:columnOrderPreserved="false" 

     android:columnCount="4" 
     > 

    <TextView 
      android:text="Email setup" 
      android:textSize="32dip" 

      android:layout_columnSpan="4" 
      android:layout_gravity="center_horizontal" 
      /> 

    <TextView 
      android:text="You can configure email in just a few steps:" 
      android:textSize="16dip" 

      android:layout_columnSpan="4" 
      android:layout_gravity="left" 
      /> 

    <TextView 
      android:text="Email address:" 

      android:layout_gravity="right" 
      /> 

    <EditText 
      android:ems="10" 
      /> 

    <TextView 
      android:text="Password:" 

      android:layout_column="0" 
      android:layout_gravity="right" 
      /> 

    <EditText 
      android:ems="8" 
      /> 

    <Space 
      android:layout_row="4" 
      android:layout_column="0" 
      android:layout_columnSpan="3" 
      android:layout_gravity="fill" 
      /> 

    <Button 
      android:text="Next" 

      android:layout_row="5" 
      android:layout_column="3" 
      /> 
</GridLayout> 

Vous devez utiliser l'étiquette <Space> et pour réaliser votre conception.