wake-up-neo.com

android: layout_height 50% der Bildschirmgröße

Hallo zusammen, ich habe gerade eine ListView in einem LinearLayout implementiert, aber ich muss die Höhe des LinearLayout definieren (es muss 50% der Bildschirmhöhe sein).

<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>

Ist das möglich?

Ich habe etwas Ähnliches für eine Schaltfläche und einen EditText gemacht, scheint aber bei Layouts nicht zu funktionieren.

Das ist mein 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);

Vielen Dank! :)

38
Marco Matarazzi

Setzen Sie seinen layout_height="0dp" *, fügen Sie ein leeres View darunter (oder ein leeres ImageView oder nur eine FrameLayout) mit einem layout_height hinzu, der gleich 0dp ist, und setzen Sie beide Ansichten auf einen layout_weight="1"

Dadurch wird jede Ansicht gleichermaßen gedehnt, wenn sie den Bildschirm ausfüllt. Da beide das gleiche Gewicht haben, nimmt jeder Bildschirm 50% des Bildschirms ein.

* Siehe den Kommentar von adamp, warum das funktioniert und andere wirklich hilfreiche Leckerbissen.

74
LeffelMania

Dies ist in XML einfach zu erledigen. Legen Sie Ihren obersten Container als LinearLayout fest und legen Sie das Ausrichtungsattribut wie gewünscht fest. Innerhalb dieser Stelle befinden sich zwei lineare Ausschnitte, die beide in Breite und Höhe "übergeordnetes Element ausfüllen" haben. Setzen Sie schließlich das Gewichtsattribut dieser beiden linearen Ausschnitte auf 1.

6
Emiam

Dies ist mein Android: layout_height = 50% Aktivität:

<?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>

stil:

<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

der beste Weg ist die Verwendung 

layout_height = "0dp" layout_weight = "0.5"

zum Beispiel

<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 haben 50% der Bildschirmhöhe

3

es ist so einfach, wenn Sie Ihren Bildschirm in zwei Teile vertikal teilen möchten (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

Um sicherzustellen, dass die Höhe einer Ansicht 50% des Bildschirms beträgt, können Sie in einem LinearLayout zwei UnterlinearLayouts erstellen. Jedes untergeordnete LinearLayout sollte " Android: layout_weight " von 0,5 haben, um die Hälfte des Bildschirms abzudecken

das übergeordnete LinearLAyout sollte " Android: Orientierung " auf Vertikal gesetzt haben  

.

.

hier ist der Code als Referenz .... Dieser Code enthält zwei Schaltflächen mit der Höhe des halben Bildschirms

<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

Sie sollten so etwas tun:

<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>

Verwenden Sie auch dp statt px oder lesen Sie darüber hier .

0
nenito

Diese Art von Arbeit hat für mich funktioniert.

Beachten Sie die im LinearLayout angegebenen Gewichte

<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>

Hoffe das hilft :)

0
Mahesh.M

Sie können Android:weightSum="2" im übergeordneten Layout kombiniert mit Android:layout_height="1" im untergeordneten Layout.

           <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>
0
patrickandroid

Um dies zu erreichen, definieren Sie ein äußeres lineares Layout mit einem weightSum={amount of weight to distribute}.

es definiert die maximale Gewichtssumme. Wenn nicht angegeben, wird die Summe durch Hinzufügen der layout_weight aller untergeordneten Elemente berechnet. Dies kann beispielsweise verwendet werden, um einem einzelnen Kind 50% des gesamten verfügbaren Speicherplatzes zu geben, indem ihm eine layout_weight von 0,5 zugewiesen und die weightSum auf 1,0 gesetzt wird. Ein anderes Beispiel wäre weightSum = 2, und wenn die beiden untergeordneten layout_weight=1 dann gesetzt werden würde 50% des verfügbaren Platzes erhalten.

WeightSum hängt von der Anzahl der untergeordneten Elemente im übergeordneten Layout ab.

0
Remario