Domanda ViewPager in Android sta prendendo tutto schermo?


Nel mio file xml ho un layout lineare che ha un ViewPager per mostrare le immagini e un altro layout lineare che contiene i pulsanti precedente e successivo per la selezione delle immagini. Il mio xml ha il seguente aspetto:

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

        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

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

            <Button
                android:id="@+id/goto_first"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="first" >
            </Button>

            <Button
                android:id="@+id/goto_last"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="last" >
            </Button>
        </LinearLayout>

    </LinearLayout>

Il mio problema è che il ViewPager sta prendendo tutto lo schermo e il Linearlayout con i pulsanti successivi non viene mostrato perché non c'è più spazio per disegnare questo LinearLayout.

Sto usando Fragments per popolare ViewPager con le viste. Il file xml per la vista dei frammenti che va in ViewPager è:

<ImageView
    android:id="@+id/ItemImage"
    android:layout_width="320dp"
    android:layout_height="180dp" />

<TextView
    android:id="@+id/ItemText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="left|bottom"
    android:layout_marginBottom="5dp"
    android:textColor="#ffffffff"
    android:textStyle="bold" />
</FrameLayout>

L'output che ottengo dopo il rendering è in questo modo:
    1. immagine (che copre il 45% di altezza dello schermo)    
 2. spazio vuoto (che copre il 45% di altezza dello schermo)    
 3.Textview (che copre il resto dell'altezza dello schermo del 10%)

L'output che voglio è:
 1. immagine (che copre il 45% di altezza dello schermo)    
 2.Textview (che copre l'altezza dello schermo del 10%)    
 3.LinearLayout per i pulsanti (che coprono il resto dell'altezza dello schermo del 45%)


11
2017-12-20 07:05


origine


risposte:


Basta dare quelli a viewpager:

 android:layout_height="0dp"
 android:layout_weight="1"

8
2017-10-02 20:52



Usa RelativeLayout. Aggiungi i tuoi pulsanti in basso con alignParentBottom="true". Quindi aggiungere il ViewPager con layout_above="@id/buttons"


8
2017-07-21 19:16



Il problema con i viewpager è che non conoscono le dimensioni poiché ogni frammento potrebbe avere dimensioni diverse. Devi impostare manualmente viewpager, non wrap_content. Raccomando di impostare un peso su tutti gli elementi nel layout lineare esterno.


4
2018-05-02 19:50



Basta usare un RelativeLayout e usare gli attributi come `

Android: layout_below

fino a raggiungere la posizione che desideri. Layout Relativo è tuo amico in questi casi.


3
2017-07-16 08:26



Fai semplicemente quanto segue per fare spazio ad altre viste, sotto o sopra:

< android.support.v4.view.ViewPager **android:layout_width**="match_parent" **android:layout_height**="match_parent" **android:layout_weight**="1"/>

Questa risposta è stata presa da un commento fatto da Jave dalle risposte fornite sul link sottostante.

collegamento: "Dimensione ViewPager Android"


0
2018-05-15 12:27