10
votes

Comment centrer deux vues dans une mise en page relative?

La tâche est simple: il y a deux boutons et un textview code> au-dessus d'eux. Tous les widgets devaient être centrés dans la disposition relative. La seule idée que j'ai est créée le troisième widget afficher code> et l'utiliser comme axe central pour les boutons. Des idées? Une disposition redondante n'est pas une bonne solution.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/tv_progress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="@string/app_name" />

    <View
        android:id="@+id/view_axis"
        android:layout_width="1dp"
        android:layout_height="1dp"
        android:layout_below="@id/tv_progress"
        android:layout_centerInParent="true" />

    <Button
        android:id="@+id/button_start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_progress"
        android:layout_toLeftOf="@id/view_axis"
        android:text="@string/start" />

    <Button
        android:id="@+id/button_stop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_progress"
        android:layout_toRightOf="@id/view_axis"
        android:text="@string/stop" />

</RelativeLayout>


1 commentaires

Regardez ici, cela répond à la question, la réponse cochée n'est pas ce qui a été posé initialement. Stackoverflow.com/Questtions/10904864/...


3 Réponses :



0
votes

Ceci versera verticalement et horizontalement le bloc total constitué des boutons TextView +

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_centerInParent="true">

        <TextView
            android:id="@+id/tv_progress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/app_name" />

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

            <Button
                android:id="@+id/button_start"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/start" />

            <Button
                android:id="@+id/button_stop"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/stop" />      

        </LinearLayout>

    </LinearLayout>

</RelativeLayout>


5 commentaires

Vous ajoutez un linearlayout de cette façon


Comment voudriez-vous centrer tout le bloc? Avec votre façon, le TextView sera centré et les boutons apparaîtront en dessous d'eux.


La touche S apparaîtra centrée sous le textview qui est centré. Je pense que c'est ce que l'OP va, mais pourrait avoir tort. Je n'ai pas eu la chance de comparer les deux layout S pourfois, mais ils devraient avoir le même effet


Bien sûr, horizontalement. J'ai posté une solution s'ils veulent le bloc complet (TextView et Buttons) centrés horizontalement et verticalement. Avec votre méthode, la "pondération" verticale sera éteinte si vous voyez ce que je veux dire. Visuellement, il sera plus lourd dans la moitié inférieure de l'écran que le sommet que le TextView frappera le point vertical central et les boutons apparaissent en dessous.


Touche, mon ami :) Je suppose que cela dépend exactement de quoi est recherché exactement



5
votes
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent">

    <Spinner
        android:id="@+id/sp_rooms"
        android:layout_toLeftOf="@id/space"
        android:layout_centerVertical="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Space
        android:id="@+id/space"
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btn_registration"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@id/space"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>

0 commentaires