1

J'ai cette mise en page:vue Aligner au centre d'une autre vue

enter image description here

que j'ai crée avec ce code:

<ImageView 
    android:src="@android:drawable/ic_menu_gallery" 
    android:layout_width="48dp" 
    android:layout_height="48dp" 
    android:id="@+id/BusinessLogoCircleImageView" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_marginRight="16dp" 
    android:layout_marginLeft="16dp" 
    android:layout_marginTop="36dp" 
    android:layout_marginBottom="36dp" 
    android:layout_gravity="right|end" 
    android:background="#ff4fc3f7" /> 
<LinearLayout 
android:layout_toRightOf="@+id/BusinessLogoCircleImageView" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:gravity="center_horizontal" 
android:orientation="vertical"> 
<TextView 
    android:text="Name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/BusinessNameTextView" 
    android:background="@color/primary_color" 
    android:textSize="@dimen/Address_Text_size" 
    android:textColor="@color/white" 
    android:typeface="normal" /> 
<TextView 
    android:text="Address" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/BusinessAddressTextView" 
    android:layout_below="@+id/BusinessNameTextView" 
    android:background="@color/primary_color" 
    android:textSize="@dimen/Address_Text_size" 
    android:textColor="@color/white" 
    android:typeface="normal" /> 
<TextView 
    android:text="Website" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/BusinessWebsiteTextView" 
    android:layout_below="@+id/BusinessAddressTextView" 
    android:background="@color/primary_color" 
    android:textSize="@dimen/Address_Text_size" 
    android:textColor="@color/white" 
    android:typeface="normal" /> 
    </LinearLayout> 
<TextView 
    android:text="5" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/CommentsCountTextView" 
    android:layout_below="@+id/BusinessLogoCircleImageView" 
    android:gravity="center" 
    android:background="@color/primary_color" 
    android:textSize="@dimen/Counter_Default_size" 
    android:textColor="@color/white" 
    android:typeface="normal" /> 
<TextView 
    android:text="overall thanks" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/CommentsCountTextView" 
    android:id="@+id/CommentsTextTextView" 
    android:gravity="center" 
    android:padding="3dp" 
    android:textSize="@dimen/SubCounter_Text_size" 
    android:textColor="@color/white" 
    android:background="@color/subtitle_color" 
    android:typeface="normal" /> 
<ListView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/CommentsTextTextView" 
    android:id="@+id/StaffTeamListView" /> 
<TextView 
    android:id="@+id/emptyMessagesListTextView" 
    android:text="" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center" 
    android:gravity="center" /> 

Le problème est que je veux la 3 textview doit être dans le centre vertical de l'imageview sur la gauche. mais je ne sais pas comment faire cela, j'ai essayé avec la mise en page relative et également enveloppant ces textview sur une linearlayout

mais le problème est toujours le même, comment je peux définir la linearlayout pour centrer le contenu en fonction de l'image? si je peux le faire sans linearlayout je le préférerais, gardez à l'esprit aussi que je veux afficher une petite image (icône) sur la gauche de chaque textview.

Une solution que j'ai à l'esprit est si je mets l'imageview et la linearlayout avec les textviews dans une autre linearlayout et allign puis centre vertical mais est-ce la meilleure solution?

+0

Vous voulez dire côte à côte? – peter

+0

je veux que le centre de l'imageview soit égal au centre des 3 textviews ensemble – CDrosos

Répondre

3

est ici un code "pseudo":

linearlayout orientation=horizontal, width=wrap_content 
     imageview 

     linearlayout orientation=vertial, width=0dp, weight=1 
      textview1 
      textview2 
      textview 3 

Un poids de 1 donnera le parent des textviews l'espace restant.

+0

et qu'en est-il de l'extra imageview j'ai dit que je veux mettre sur la gauche de chaque textview? – CDrosos

+0

Vérifier mes modifications. Je ne savais pas si je recevais ce que vous demandiez – peter

+0

super, je ne savais pas que, merci – CDrosos

1

Une solution serait d'avoir l'image et les 3 textes dans un RelativeLayout enveloppé. La hauteur de la mise en page relative est donnée par le contenu enveloppé, tandis qu'à l'intérieur, les éléments sont centrés verticalement, ce qui signifie que l'image ou les 3 lignes de texte peuvent varier en hauteur et l'autre sera centrée.

<RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

    <ImageView 
      android:src="@android:drawable/ic_menu_gallery" 
      android:layout_width="48dp" 
      android:layout_height="48dp" 
      android:id="@+id/BusinessLogoCircleImageView" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true" 
      android:layout_marginRight="16dp" 
      android:layout_marginLeft="16dp" 
      android:layout_marginTop="36dp" 
      android:layout_marginBottom="36dp" 
      android:layout_gravity="right|end" 
      android:layout_centerVertical="true" 
      android:background="#ff4fc3f7" /> 

    <LinearLayout 
      android:layout_toRightOf="@+id/BusinessLogoCircleImageView" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:orientation="vertical" 
      android:layout_centerVertical="true"> 
     <TextView 
       android:text="Name" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/BusinessNameTextView" 
       android:background="#00FF00" 
       android:textSize="14dp" 
       android:textColor="@color/white" 
       android:typeface="normal" /> 
     <TextView 
       android:text="Address" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/BusinessAddressTextView" 
       android:layout_below="@+id/BusinessNameTextView" 
       android:background="#00FF00" 
       android:textSize="14dp" 
       android:textColor="@color/white" 
       android:typeface="normal" /> 
     <TextView 
       android:text="Website" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/BusinessWebsiteTextView" 
       android:layout_below="@+id/BusinessAddressTextView" 
       android:background="#00FF00" 
       android:textSize="14dp" 
       android:textColor="@color/white" 
       android:typeface="normal" /> 
    </LinearLayout> 
</RelativeLayout> 
+0

merci, est-il plus léger d'avoir une mise en page relative avec une autre disposition relative et la disposition linéaire ou mieux avoir une disposition relative et à l'intérieur d'un linéaire disposition à l'intérieur d'une autre linearlayout? – CDrosos

+0

Je pense qu'il est préférable de privilégier le LinearLayout que le RelativeLayout, donc la solution avec moins de disposition des parents. Aussi à propos des mises en page que vous avez écrites je voudrais commencer avec un LinearLayout sur le parent avec l'orientation verticale, ajouter le texte de la liste vide différemment, et ne pas déranger avec l'id de l'avant de l'alignement. – petrumo

1
<?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:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context="com.example.maks.myapplication.MainActivity"> 

    <LinearLayout 
     android:id="@+id/linear" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

    <ImageView 
     android:src="@android:drawable/ic_menu_gallery" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:id="@+id/BusinessLogoCircleImageView" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_marginRight="16dp" 
     android:layout_marginLeft="16dp" 
     android:layout_marginTop="36dp" 
     android:layout_marginBottom="36dp" 
     android:layout_gravity="right|end" 
     android:background="#ff4fc3f7" /> 
    <LinearLayout 
     android:layout_toRightOf="@+id/BusinessLogoCircleImageView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:orientation="vertical"> 
     <TextView 
      android:text="Name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/BusinessNameTextView" 
      android:typeface="normal" /> 
     <TextView 
      android:text="Address" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/BusinessAddressTextView" 
      android:layout_below="@+id/BusinessNameTextView" 
      android:typeface="normal" /> 
     <TextView 
      android:text="Website" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/BusinessWebsiteTextView" 
      android:layout_below="@+id/BusinessAddressTextView" 
      android:typeface="normal" /> 
    </LinearLayout> 

    </LinearLayout> 
    <TextView 
     android:text="5" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/CommentsCountTextView" 
     android:layout_below="@+id/linear" 
     android:gravity="center" 
     android:typeface="normal" /> 
    <TextView 
     android:text="overall thanks" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/CommentsCountTextView" 
     android:id="@+id/CommentsTextTextView" 
     android:gravity="center" 
     android:padding="3dp" 
     android:typeface="normal" /> 
    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/CommentsTextTextView" 
     android:id="@+id/StaffTeamListView" /> 
    <TextView 
     android:id="@+id/emptyMessagesListTextView" 
     android:text="" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     android:gravity="center" /> 
</RelativeLayout> 

utiliser. J'espère t'aider.