web-dev-qa-db-fra.com

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

Bonjour à tous Je viens d'implémenter un ListView dans LinearLayout, mais je dois définir la hauteur de LinearLayout (elle doit représenter 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.

Ceci est 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);

Je vous remercie! :)

38
Marco Matarazzi

Définissez son layout_height="0dp" *, ajoutez une View vierge en dessous (ou une vierge ImageView ou juste une FrameLayout) avec un layout_height également égal à 0dp, puis définissez un layout_weight="1" sur __ pour les deux vues.

Cela étendra chaque vue autant qu’elle remplit l’écran. Puisque les deux ont le même poids, chacun occupera 50% de l'écran.

* Voir le commentaire d'adamp pour savoir pourquoi cela fonctionne et d'autres informations très utiles.

74
LeffelMania

C'est facile à faire en XML. Définissez votre conteneur supérieur sur LinearLayout et définissez l'attribut d'orientation comme vous le souhaitez. Ensuite, à l'intérieur de cet emplacement, deux couches linéaires dont les deux ont "remplir le parent" en largeur et en hauteur. Enfin, définissez l’attribut weigth de ces deux représentations linéaires sur 1.

6
Emiam

Ceci est mon Android: layout_height = 50% Activité:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="vertical" >

    <LinearLayout
        Android:id="@+id/alipay_login"
        style="@style/loginType"
        Android:background="#27b" >
    </LinearLayout>

    <LinearLayout
        Android:id="@+id/taobao_login"
        style="@style/loginType"
        Android:background="#ed6d00" >
    </LinearLayout>

</LinearLayout>

style:

<style name="loginType">
    <item name="Android:layout_width">match_parent</item>
    <item name="Android:layout_height">match_parent</item>
    <item name="Android:layout_weight">0.5</item>
    <item name="Android:orientation">vertical</item>
</style>
6
Praise Song

le meilleur moyen est d'utiliser 

layout_height = "0dp" layout_weight = "0.5"

par exemple

<WebView
    Android:id="@+id/wvHelp"
    Android:layout_width="match_parent"
    Android:layout_height="0dp"
    Android:layout_weight="0.5" />

<TextView
    Android:id="@+id/txtTEMP"
    Android:layout_width="match_parent"
    Android:layout_height="0dp"
    Android:layout_weight="0.5"
    Android:text="TextView" />

WebView, TextView ont 50% de la hauteur de l'écran

3
Mohammad Foolady

c'est si facile 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>
0
ahmad zeini

Pour vous assurer que la hauteur d'une vue correspond à 50% de l'écran, nous pouvons créer deux sous-linéaires LinearLayouts dans un LinearLayout. Chaque enfant de LinearLayout devrait avoir " Android: layout_weight " de 0.5 pour couvrir la moitié de l'écran.

" Android: orientation " défini sur vertical  

.

.

voici le code pour votre référence .... ce code contient deux boutons de hauteur la moitié de l'écran

<LinearLayout 
Android:orientation="vertical"
Android:layout_height="match_parent">

<LinearLayout

    Android:layout_weight="0.5"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="horizontal">

    <Button
        Android:padding="10dp"
        Android:layout_weight="0.5"
        Android:layout_width="wrap_content"
        Android:layout_height="fill_parent"
        Android:text="button1"
        Android:id="@+id/button1"
        Android:layout_alignParentTop="true"
        Android:layout_alignParentLeft="true"
        Android:layout_alignParentStart="true"
        Android:layout_alignParentBottom="true"
        />

    <Button
        Android:padding="10dp"
        Android:layout_weight="0.5"
        Android:layout_width="wrap_content"
        Android:layout_height="fill_parent"
        Android:text="button2"
        Android:id="@+id/button2"
        Android:layout_alignParentTop="true"
        Android:layout_alignParentRight="true"
        Android:layout_alignParentEnd="true"
        Android:layout_alignParentBottom="true"
        />

    </LinearLayout>

<LinearLayout

    Android:layout_weight="0.5"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="horizontal">


    </LinearLayout>
   </LinearLayout>
0
swayamraina

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>

Utilisez également dp à la place de px ou lisez-le à ce sujet ici .

0
nenito

Ce genre de travail a fonctionné pour moi… Bien que FAB ne flotte pas de manière indépendante, mais maintenant il n'est pas poussé à terre.

Observez 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 t'aides :)

0
Mahesh.M