2013-04-18 5 views
0

J'ai des difficultés avec ma mise en page.Mise en page: image de fond streched

Comme mon premier projet de développement, j'essaye de faire un simple chronomètre. Je veux avoir une image d'un chronomètre en arrière-plan et le bouton de démarrage et d'arrêt au bas de l'application, côte à côte et en remplissant la largeur de l'écran.

Voici mon meilleur coup, mais je ne suis pas satisfait. Tous les widgets sont placés correctement, mais ... Mon arrière-plan est strié et mes boutons semblent compressés verticalement, même le texte en bas est un peu rogné.

Je trouve que si je change ces lignes

android:layout_width="fill_parent" 
android:layout_height="fill_parent" 

par

android:layout_width="wrap_content" 
android:layout_height="wrap_content" 

L'arrière-plan est ok, les boutons trop .. mais tous les widgets sont placés au centre de l'activité.

Comment puis-je résoudre ce problème? Par ailleurs, si je veux avoir mes boutons côte à côte, est-ce que j'ai choisi la meilleure solution?

Merci pour votre aide! Charles.

... et maintenant mon xml ....

<LinearLayout 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:orientation="vertical" 
android:background="@drawable/background" 
tools:context=".Chronosv1" > 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:layout_weight="2" > 

<Chronometer 
    android:id="@+id/chronometer1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" /> 

</LinearLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_weight="1" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="50" 
     android:text="START" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="50" 
     android:text="STOP" /> 
</LinearLayout> 

J'ai essayé relativeLayout. Je ne sais pas comment avoir deux boutons de la même taille sans utiliser de rembourrage, je ne pense pas que ce soit une bonne idée si vous voulez que votre application fonctionne sur différents écrans.

De toute façon je trouve cela, mais j'ai toujours mon image streched et mes boutons n'ont pas la même taille.

<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:background="@drawable/background" 
tools:context=".Chronosv1" > 

<Chronometer 
    android:id="@+id/chronometer1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:text="Start" /> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_toRightOf="@id/button1" 
    android:text="Stop" /> 

+1

1) Très probablement, vous aurez besoin de quelque chose de plus avancé que 'LinearLayout'; (2) Quel est votre composant 'chronomètre'? –

+0

Chronmeter est un widget Android android.widget.Chronometer –

Répondre

0

J'ai finalement trouvé la solution.

Premier problème: mon image de 9 patch a caché mon autre composant.

Solution: ajoutez android: padding = "0dip" dans votre LinearLayout ... ici le sujet qui m'a donné ma réponse (Android layout broken with 9-patch background)

Deuxième problème: pourquoi ma photo a été streched alors que je l'ai conçu à la taille exacte de l'écran. Celui-ci était une question idiote ...C'était à cause de la barre d'action et l'autre barre ci-dessus (avec le niveau de la batterie et d'autres choses). Pour se débarrasser de ces barres (incluses dans le thème), utilisez une version différente du thème dans le manifeste.

Je choisis: Theme.Light.NoTitleBar.Fullscreen.

Problèmes résolus.

0

Essayez RelativeLayout;) Je pense que cela est beaucoup plus facile à manipuler qu'un LinearLayout. Peut-être que vous pouvez télécharger une image à quoi il ressemble et je vais vous donner une solution relativelayout;)

+0

J'ai quelques difficultés avec cette couche, j'ai trouvé comment mettre les boutons côte à côte, mais pas comment remplir toute la largeur de l'écran. J'ai joint une photo de mon écran. –

+0

[Voici l'instantané] (http://imageshack.us/photo/my-images/199/snapshotfv.png) –

+0

J'ai modifié mon message avec un autre échantillon de code. –

0

Pouvez-vous essayer? Devrait travailler OMI. C'est une meilleure façon d'obtenir votre mise en page.

<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" 
tools:context=".Chronosv1" > 


<LinearLayout 
android:id="@+id/layout1" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:weightSum="2" 
android:layout_alignParentBottom="true"> 
<Button 
android:id="@+id/button1" 
android:layout_width="0dp" 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:layout_margin="5dp" 
android:text="Start" /> 

<Button 
android:id="@+id/button2" 
android:layout_width="0dp" 
android:layout_height="wrap_content" 
android:layout_weight="1" 
android:layout_margin="5dp" 
android:text="Stop" /> 
</LinearLayout> 
<Chronometer 
android:id="@+id/chronometer1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_above="@+id/layout1" /> 
</RelativeLayout> 
+0

Pour les boutons, c'est bon, mais l'arrière-plan est toujours steched. –

+0

J'ai remarqué que la barre de titre supérieure (celle avec le nom de l'application) a un effet sur l'image de fond ... Je ne comprends pas pourquoi mais mon image 320x240 ne s'affiche pas correctement à cause de cela. J'ai essayé de convertir ma photo en une image de 9 patchs. Maintenant, dans Eclipse/Graphical Layout tout va bien mais sur mon AVD et sur mon téléphone les autres composants ne sont plus affichés ... grrrrrr. –

Questions connexes