2012-07-27 1 views
22

im essayant de possition mon bouton pas exactement dans le centre, mais permet de dire que dans le 2/5 s de la hauteur de l'écran, je cherchais attribut sans succès, alors j'ai essayé cette approcheY at-il un moyen de compenser une vue du centre dans Android?

<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:background="@drawable/background" 
android:padding="20dp" > 

<ImageButton 
    android:id="@+id/flashlight_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_above="@+id/fakeView" 
    android:background="@null" 
    android:contentDescription="@string/flashlight_button_description" 
    android:src="@drawable/freeml_bright" /> 

    <View 
    android:id="@+id/fakeView" 
    android:layout_width="10dp" 
    android:layout_height="10dp" 
    android:layout_centerInParent="true" 
    android:background="#FFAABB" /> 

</RelativeLayout> 

mais il ne fonctionne pas , même si je mets une marge sur la fausse vue.

Des idées?

// EDIT //

Merci pour vous réponses sur les gars, attribut de remplissage fonctionne, mais comme il est une grande image et si je veux commencer à 2/5èmes de hauteur de l'écran, il couvre le point central de l'écran, donc si j'utilise l'attribut padding cela fonctionne mais il le repousse du centre et ne lui permet pas de le couvrir. Cependant, je l'ai fait en utilisant la disposition linéaire, que j'ai voulu éviter parce qu'il y a plus de vue en haut et en bas l'un à côté de l'autre de sorte qu'il conduirait à des vues imbriquées utilisant la disposition linéaire. Malheureusement, je pense que c'est la seule option.

Il en fait, il utilise une autre disposition linéaire qui remplit l'espace restant non utilisée par des vues de dessus et en bas avec hauteur = 0DP et poids = 1 et définit sa gravité au centre

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:padding="20dp"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:gravity="center" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:contentDescription="@string/application_logo_description" 
     android:src="@drawable/mylight" /> 

    <ImageButton 
     android:id="@+id/settings_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:background="@null" 
     android:contentDescription="@string/settings_button_description" 
     android:src="@drawable/settings_button" /> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <ImageButton 
     android:id="@+id/flashlight_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@null" 
     android:contentDescription="@string/flashlight_button_description" 
     android:src="@drawable/flashlight_button_selector" /> 

    <View 
     android:id="@+id/fakeView" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_marginTop="60dp" 
     android:background="#FFAABB" /> 
</LinearLayout> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|center_horizontal" 
    android:contentDescription="@string/powered_by_description" 
    android:src="@drawable/powered_by" /> 

<ImageButton 
    android:id="@+id/ad_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|center_horizontal" 
    android:background="@null" 
    android:contentDescription="@string/ad_button_description" 
    android:src="@drawable/freeml" /> 

</LinearLayout> 

Merci pour vos commentaires.

Répondre

3

Ne pas utiliser la marge, l'utilisation rembourrage (en haut), comme suit:

<View 
android:id="@+id/fakeView" 
android:layout_width="10dp" 
android:layout_height="10dp" 
android:layout_centerInParent="true" 
android:paddingTop="80dp" 
android:background="#FFAABB" /> 

Cela devrait fonctionner, mais je ne l'ai pas testé!

+0

Salut, ça fonctionne, mais que je pourrais avoir vous induire en erreur, beacause son une image assez grande dans le ImageButton, donc si je veux pour le faire démarrer dans 2/5s de la hauteur de l'écran, donc il couvre le point central de l'écran. SI j'utilise votre réponse suggérée, il pousse le bouton loin du centre et ne permet pas de le couvrir. – urSus

+0

Hmm, peut-être essayer de remplacer paddingTop avec paddingBottom? –

+0

Oh, en fait, je l'ai mal lu, réglage de remplissage sur la fausse vue centrée ne fonctionne pas du tout. Réglage du rembourrage sur le bouton ci-dessus il suffit de pousser le bouton vers le haut ce qui n'est pas la solution pour moi comme je le veux pour couvrir le point milieu – urSus

3

essayez d'utiliser Android attribut: layout_toLeftOf = « @ + id/fakeView »

+0

+1 C'est fantastique! –

32

en fonction de la taille de l'écran du dispositif cible, rembourrage par X dp peut déplacer plus qu'un cinquième de la hauteur.

vous devrez peut-être coder ce mouvement vous-même.

mais là encore, rien ne vous empêche de faire

<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:background="@drawable/background" 
android:padding="20dp" > 

<View 
android:id="@+id/fakeView" 
android:layout_width="10dp" 
android:layout_height="10dp" 
android:layout_centerInParent="true" 
android:background="#FFAABB" /> 

<ImageButton 
android:id="@+id/flashlight_button" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_centerHorizontal="true" 
android:layout_above="@+id/fakeView" 
android:marginBottom="50dp" 
android:background="@null" 
android:contentDescription="@string/flashlight_button_description" 
android:src="@drawable/freeml_bright" /> 

+0

+1 Fonctionne très bien. –

+0

Merci monsieur monsieur :) – Shark

+5

Une fausse vue au milieu! C'est penser en dehors de la boîte, juste ce dont j'avais besoin! :) –

Questions connexes