2016-02-08 2 views
1

J'essaie de placer un objet ImageView à gauche d'un objet linéaire (c'est-à-dire un parent de deux boutons). Je veux essentiellement deux boutons centrés horizontalement avec l'écran avec une place d'image à gauche des boutons centrés. Je veux toujours que les boutons restent centrés horizontalement, la vue d'image placée ne devrait pas être centrée, juste simplement sur le côté.Positionnement d'ImageView à gauche des boutons centrés

Toutes les suggestions seraient vraiment géniales. Je suis approchais mon problème avec les mauvaises dispositions, mais voici ce que j'ai essayé:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    android:id="@+id/gameSettingsContainer" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.example.vb1115.multchoicequestion.LaunchScreen" 
    android:orientation="vertical" 
    android:gravity="center_horizontal"> 
    <LinearLayout 
     android:id="@+id/buttonContainer" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <ToggleButton android:id="@+id/mathButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textOff="Math" 
      android:textOn="Math" 
      android:text="Math"/> 
     <ToggleButton android:id="@+id/bioButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textOff="Biology" 
      android:textOn="Biology" 
      android:text="Biology"/> 
    </LinearLayout> 
    <ImageView 
     android:id="@+id/animatedArrow" 
     android:src="@mipmap/green_arrow" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_toLeftOf="@id/buttonContainer"/> 
</RelativeLayout> 

Répondre

1

Bien que je n'ai pas mon Android Studio pour tester, je peux déjà faire quelques hypothèses ...

1er, pas besoin d'utiliser android:orientation="vertical" ni android:gravity="center_horizontal" pour votre RelativeLayout racine ...

2ème, pour positionner les 2 enfants utilisent des éléments android:layout_centerHorizontal pour la LinearLayout et garder android:layout_alignParentLeft pour votre ImageView ...

Cela devrait commencer à être un peu mieux ... L'idée principale est que dans un RelativeLayout, il est généralement plus efficace de laisser les enfants décider de leur position ... J'espère que cela aidera.

+0

cela fonctionne, merci !! Appréciez également les clarifications. – Vik

1

Ici solution

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    android:id="@+id/gameSettingsContainer" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <LinearLayout 
     android:id="@+id/buttonContainer" 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_centerHorizontal="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <ToggleButton 
      android:id="@+id/mathButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Math" 
      android:textOff="Math" 
      android:textOn="Math"/> 

     <ToggleButton 
      android:id="@+id/bioButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Biology" 
      android:textOff="Biology" 
      android:textOn="Biology"/> 
    </LinearLayout> 

    <ImageView 
     android:id="@+id/animatedArrow" 
     android:layout_toStartOf="@+id/buttonContainer" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@mipmap/green_arrow"/> 
</RelativeLayout> 
0

Sans avoir des studios Android à tester:

Pour centrer le LinearLayout dans le RelativeLayout utiliser le Layout_centerHorizontal = "true"

<LinearLayout 
    android:id="@+id/buttonContainer" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true"> 

Pour chacun des boutons être distribué uniformément et de façon centralisée use_weight = "1" (donc chacun a le même poids) et gravity = "center_horizontal"

<ToggleButton android:id="@+id/mathButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textOff="Math" 
     android:textOn="Math" 
     android:text="Math" 
     android:layout_weight="1" 
     android:layout_gravity="center_horizontal"/> 
    <ToggleButton android:id="@+id/bioButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textOff="Biology" 
     android:textOn="Biology" 
     android:text="Biology" 
     android:layout_weight="1" 
     android:layout_gravity="center_horizontal"/> 

Placez ensuite la ImageView à layout_toStartOf votre buttonContainer

<ImageView 
     android:id="@+id/animatedArrow" 
     android:src="@mipmap/green_arrow" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toStartOf="@+id/buttonContainer">