53 votes

Android:layout_height 50% de la taille de l'écran

Je viens d'implémenter un ListView à l'intérieur d'un LinearLayout, mais je dois définir la hauteur du LinearLayout (elle doit être égale à 50% de la hauteur de l'écran).

<LinearLayout
    android:id="@+id/widget34"
    android:layout_width="300px"
    android:layout_height="235px"
    android:orientation="vertical"
    android:layout_below="@+id/tv_scanning_for"
    android:layout_centerHorizontal="true">

    <ListView
        android:id="@+id/lv_events"
        android:textSize="18sp"         
        android:cacheColorHint="#00000000"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_scanning_for"
        android:layout_centerHorizontal="true">
    </ListView>

</LinearLayout>

Est-ce possible ?

J'ai fait quelque chose de similaire pour un bouton et un EditText, mais cela ne semble pas fonctionner avec les Layouts.

Voici mon code :

    //capture the size of the devices screen
    Display display = getWindowManager().getDefaultDisplay();
    double width = display.getWidth();

    //my EditText will be smaller than full screen (80%)        
    double doubleSize = (width/5)*4;
    int editTextSize = (int) doubleSize;

    //define the EditText 
    userName = (EditText) this.findViewById(R.id.userName);
    password = (EditText) this.findViewById(R.id.password);

    //set the size
    userName.setWidth(editTextSize);
    password.setWidth(editTextSize);

0 votes

Avez-vous essayé d'utiliser un RelativeLayout autour du LinearLayout et de dimensionner le RelativeLayout ?

0 votes

Puis-je entrer un pourcentage dans le paramètre RelativeLayout height ?

0 votes

Utiliser des LayoutParams personnalisés : developer.Android.com/reference/Android/view/ avec RelativeLayout.setLayoutParams() : developer.Android.com/reference/Android/view/ . fixer la hauteur à display.getHeight()/2

1voto

Mahesh.M Points 46

Cela a fonctionné pour moi. Bien que le FAB ne flotte pas indépendamment, il n'est plus poussé vers le bas.

Observer les poids donnés à l'intérieur du LinearLayout

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

            <android.support.v7.widget.RecyclerView
                android:id="@+id/sharedResourcesRecyclerView"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="4"
                />

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/fab"
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_gravity="bottom|right"
                android:src="@android:drawable/ic_input_add"
                android:layout_weight="1"/>

        </LinearLayout>

J'espère que cela vous aidera :)

0voto

nenito Points 421

Vous devriez faire quelque chose comme ça :

<LinearLayout
    android:id="@+id/widget34"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_below="@+id/tv_scanning_for"
    android:layout_centerHorizontal="true">

    <ListView
        android:id="@+id/lv_events"
        android:textSize="18sp"         
        android:cacheColorHint="#00000000"
        android:layout_height="1"
        android:layout_width="fill_parent"
        android:layout_weight="0dp"
        android:layout_below="@+id/tv_scanning_for"
        android:layout_centerHorizontal="true"
        />

</LinearLayout>

Utiliser également dp au lieu de px ou lire à ce sujet aquí .

0voto

ahmad zeini Points 1

C'est très simple si vous voulez diviser votre écran en deux parties verticalement ( top30% + bottom70%)

<LinearLayout
            android:id="@+id/LinearLayoutTop"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="2">

     </LinearLayout>
     <LinearLayout
            android:id="@+id/LinearLayoutBottom"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1">

     </LinearLayout>

0voto

Remario Points 2573

Pour ce faire, il convient de définir un schéma linéaire extérieur avec un weightSum={amount of weight to distribute} .

il définit la somme maximale des poids. S'il n'est pas spécifié, la somme est calculée en ajoutant le poids de tous les enfants. Ceci peut être utilisé par exemple pour donner à un seul enfant 50% de l'espace total disponible en lui donnant un layout_weight de 0.5 et en fixant le weightSum à 1.0. Un autre exemple serait de fixer weightSum=2, et si les deux enfants fixés à layout_weight=1 chacun obtiendrait alors 50 % de l'espace disponible.

WeightSum dépend du nombre d'enfants dans la disposition parentale.

-1voto

paddydub Points 786

Vous pouvez utiliser android:weightSum="2" sur le schéma parent combiné avec android:layout_height="1" sur la mise en page enfant.

           <LinearLayout
                android:layout_height="match_parent"
                android:layout_width="wrap_content"
                android:weightSum="2"
                >

                <ImageView
                    android:layout_height="1"
                    android:layout_width="wrap_content" />

            </LinearLayout>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X