Impossibile vedere il layout della vista completato in Android Studio


89

Sto creando un LinearLayout verticale che verrà visualizzato in una ScrollView verticale. Non riesco a trovare un modo in Android Studio per vedere la parte di LinearLayout che si trova sotto la parte inferiore di ScrollView. C'è un modo per vedere il layout completo invece di vincolarlo al viewport fornito dal renderer?

Risposte:


66

Come ha detto Drew, la creazione di una definizione di dispositivo definita dall'utente è stata l'unica soluzione che ha funzionato per me. Di seguito ti mostro i passaggi da seguire:

Passaggio 1) Nel riquadro di anteprima, apri il menu a discesa Selezione dispositivo virtuale e seleziona Aggiungi definizione dispositivo.

inserisci qui la descrizione dell'immagine

Passaggio 2) Nella finestra di dialogo Dispositivi virtuali, fare clic sul pulsante Crea dispositivo virtuale .

inserisci qui la descrizione dell'immagine

Passaggio 3) Nella finestra di dialogo Seleziona hardware, fare clic sul pulsante Nuovo profilo hardware .

inserisci qui la descrizione dell'immagine

Passaggio 4) Nella finestra di dialogo Configura profilo hardware, specificare (ad esempio) una risoluzione di 720 x 4000 px e una dimensione dello schermo di 12 pollici. Inoltre impostando lo Screensize si ottiene una densità di xhdpi (grazie a Mete).

inserisci qui la descrizione dell'immagine

Passaggio 5) Chiudi tutte le finestre di dialogo e riavvia Android Studio. Passaggio 6) Aprire il menu a discesa Selezione dispositivo virtuale . Il nuovo profilo hardware definito dall'utente può essere trovato in Telefoni e tablet generici . inserisci qui la descrizione dell'immagine


1
Grazie per la tua risposta con tutte le immagini e descrizioni utili
Roozbeh Zabihollahi

non riesco a vedere nessun posto per aggiungere altezza
Lasitha Lakmal

37

Ho appena scoperto come. È necessario creare una definizione del dispositivo definita dall'utente in Android AVD: ne ho creata una di 480 x 4000 pixel. Esci e riavvia Android Studio, quindi puoi selezionare questo dispositivo nel renderizzatore di anteprima e puoi vedere 4000 pixel di LinearLayout.


+1 per non aver smontato la visuale e per aver dichiarato la necessità del riavvio.
Iain Smith

Questa è l'unica soluzione adatta che ho trovato finora. C'è un problema; Android Studio, quando si utilizza questa risoluzione, imposta automaticamente la densità su xxxhdpi. C'è un modo per impostare nuovamente la densità su hdpi? Sto usando Android Studio v1.2
Brabbeldas

2
@Brabbeldas quando crei il profilo, puoi dare la larghezza e l'altezza in pixel, ma puoi anche dare la "Dimensione schermo" in pollici, e la combinazione di queste impostazioni imposta la densità. Ad esempio, ho impostato il mio su 480x4000 con una dimensione dello schermo di 16 pollici e questo mi dà hdpi
Mete

Ho aggiunto una nuova risposta con screenshot che descrivono come creare la definizione del dispositivo definita dall'utente. @Drew, se lo trovi utile per gli altri, puoi accettare che sia la risposta corretta.
Brabbeldas

Meraviglioso Per me il ridimensionamento una volta non ha funzionato! E anche la seguente risposta stackoverflow.com/a/31582758/1752988 è stata utile!
Randika Vishman

30

layoutHai trovato una soluzione più semplice , aggiungi qualcosa come di seguito e regola come ti serve:

android:layout_marginTop="-1500dp"

16
Risposta migliore, ma sarebbe meglio se usi: tools: layout_marginTop = "- 1500dp". In questo modo lo scroll negativo si applica solo all'editor di layout e non in runtime.
Leandro Glossman

Utile quando il pulsante menzionato da @Eric non è disponibile.
Chintan Shah

18

nella nuova versione di Android Studio (non so da quale versione, ma sto usando l'ultima 2.3.3 ora) puoi ridimensionare il layout di anteprima trascinandolo

inserisci qui la descrizione dell'immagine


7
+1 ha funzionato per me, ma ho dovuto cambiare manualmente il dispositivo nella gif sopra da nexus 4 a "Personalizzato" per far apparire il pulsante di trascinamento.
Songo

17

Android Studio offrirà una visualizzazione completa attivabile, se ScrollView è la radice del layout. Avevo messo il mio sopra il RelativeLayout predefinito e dovevo aggiustarlo manualmente nell'XML prima che la GUI mi desse la vista completa.


Come lo trovi?
mszaro

1
@ MattSzaro non ricordo dove ho trovato le informazioni, ma se intendi dove trovare l'XML per cambiarlo in modo che lo scrollview sia l'elemento radice, ci sono due schede in basso quando apri il .xml per una visualizzazione: "Design" e "Testo". Fare clic su "Testo". Se intendi dove trovare l'interruttore una volta apportata la modifica, penso che tu debba chiudere e riaprire il progetto una volta (forse) e poi in "Design" è il pulsante più a sinistra nella seconda riga della barra degli strumenti, con un'icona sembra un pezzo di carta a tre colonne o qualcosa del genere: "Attiva / disattiva modalità di rendering della vista".
davidgro

1
@davidgro, individuare l'opzione nella barra degli strumenti è quello che stavo cercando. Grazie! Questo ha davvero aiutato.
mszaro

1
In combinazione con la tecnica in " Riutilizzo dei layout con<include/> ", possiamo estrarre un ScrollViewal centro di un layout in un file XML separato e visualizzarlo per intero.
Pang

E se la tua scrollview non fosse la root view. Vorrei che espandessero l'intera cosa insanguinata e mettessero semplicemente un contorno dello schermo del telefono sopra per mostrare l'area visibile.
JPM

17

Spero che lo screenshot ti aiuti:

immagine dello schermo


4
manca questo pulsante quando faccio clic su scrollView nell'albero dei componenti
user3491799

8
Ho appena scoperto che scrollview deve essere il livello superiore per mostrare il pulsante. Grazie Eric!
user3491799

L'opzione di visualizzazione completa risolve il mio problema per le visualizzazioni a scorrimento verticale, tuttavia ho una visualizzazione a scorrimento orizzontale incorporata che è ancora solo parzialmente visibile (il resto si estende a destra fuori dalla visualizzazione) C'è un modo per risolvere questo problema senza utilizzare l'opzione Dispositivo personalizzato ?
Essah

1
Questa è la risposta perfetta. è migliore del profilo del dispositivo molto alto. ed è disponibile in Android Studio 0.1.7+
Ninja

12

È possibile utilizzare l'attributo scrollY per scorrere ScrollView nell'anteprima. L'utilizzo dell'attributo scrollY con lo spazio dei nomi degli strumenti farà scorrere la visualizzazione solo nel display e non nell'app effettiva. E assicurati di utilizzare px come unità con l'attributo scrollY.

tools:scrollY="150px"

5

Aggiornamento: ora puoi scorrere una ScrollView direttamente nel pannello di anteprima (ho provato su Android Studio versione 2.3.2)

Risposta breve: fai clic con il pulsante destro del mouse su ScrollView e seleziona Refactoring> Estrai> Layout .

Android-studio estrarrà il tuo ScrollView in un nuovo file di layout e metterà l' tools:showIn="@layout/original_layout_file"attributo nel layout principale (il tuo ScrollView).

Nota: Android-studio visualizzerà in anteprima il layout completo se il layout principale è ScrollView.


1
@Tequilaman Se stai usando Android Studio versione 2.3.2 puoi scorrere il contenuto di ScrollView usando una rotellina del mouse sul pannello di anteprima
Momepukku

4

In Android Studio versione 3.2.1 puoi selezionare il dispositivo "Personalizzato" nel pannello di anteprima e quindi ridimensionare l'anteprima all'altezza di cui hai bisogno.

esempio di anteprima personalizzata di Android Studio


1
questo è il modo più semplice! migliore.
Noor Hossain

2
  • fare clic su scrollView nell'albero adiacente (a destra)
  • fare clic sul nuovo pulsante che compare a sinistra (seconda riga della barra degli strumenti)

1
potresti aggiungere uno screenshot? non riesco a vedere alcun nuovo pulsante apparire.
Brabbeldas

@Brabbeldas il nuovo pulsante chiamato "attiva / disattiva modalità di rendering viewport". Forse ti aiuterà a stackoverflow.com/a/30443662/1323374
Ninja

1

Un'altra rapida soluzione alternativa è nascondere temporaneamente i layout in alto in modo che i layout in basso possano apparire nella finestra visibile in Android Studio.

Indossa android:visibility="gone"i layout che vuoi nascondere.

Esempio:

<HorizontalScrollView
            android:visibility="gone"
            android:id="@+id/hsv02"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignStart="@+id/ll24"
            android:layout_below="@+id/ll199">

 </HorizontalScrollView>

Questa è una soluzione molto scomoda ... Non farlo almeno è estremamente necessario.
Joaquin Iurchuk

1
Usa tools:visibility="gone".
dnp

0

Potrei essere in ritardo, ma sarà molto più facile per te impostare i margini su negativo per spostare la visualizzazione a scorrimento a sinistra.

Per esempio:

margine:

sinistra: -100px

Ora puoi vedere e modificare la visualizzazione a scorrimento come preferisci!


0

DISPOSIZIONE DEL TAVOLO

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="1">
    <TableRow android:padding="5dip">
        <TextView
            android:layout_height="wrap_content"
            android:text="New Product Form"
            android:typeface="serif"
            android:layout_span="2"
            android:gravity="center_horizontal"
            android:textSize="20dip" />
    </TableRow>
    <TableRow>
        <TextView
            android:layout_height="wrap_content"
            android:text="Product Code:"
            android:layout_column="0"/>
        <EditText
            android:id="@+id/prod_code"
            android:layout_height="wrap_content"
            android:layout_column="1"/>
    </TableRow>
    <TableRow>
        <TextView
            android:layout_height="wrap_content"
            android:text="Product Name:"
            android:layout_column="0"/>
        <EditText
            android:id="@+id/prod_name"
            android:layout_height="wrap_content"
            android:scrollHorizontally="true" />
    </TableRow>
    <TableRow>
        <TextView
            android:layout_height="wrap_content"
            android:text="Product Price:" />
        <EditText
            android:id="@+id/prod_price"
            android:layout_height="wrap_content" />
    </TableRow>
    <TableRow>
        <Button
            android:id="@+id/add_button"
            android:text="Add Product"
            android:layout_height="wrap_content" />
        <Button
            android:id="@+id/cancel_button"
            android:text="Cancel"
            android:layout_height="wrap_content" />
    </TableRow>
</TableLayout>
















GridLAYOUT

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/GridLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:columnCount="3"
    android:rowCount="2"
    tools:context=".Main3Activity" >
    <Button
        android:id="@+id/button3"
        android:layout_column="0"
        android:layout_gravity="fill_horizontal"
        android:layout_row="0"
        android:text="Button"
        />
    <Button
        android:id="@+id/button1"
        android:layout_column="1"
        android:layout_gravity="fill_horizontal"
        android:layout_row="0"
        android:text="Button" />
    <Button
        android:id="@+id/button2"
        android:layout_column="2"
        android:layout_gravity="fill_vertical"
        android:layout_row="0"
        android:layout_rowSpan="2"
        android:text="Button" />
    <Button
        android:id="@+id/button4"
        android:layout_column="0"
        android:layout_columnSpan="2"
        android:layout_gravity="fill_horizontal"
        android:layout_row="1"
        android:text="Button" />
</GridLayout>





ANOTHER TABLE LAYOUT

<?xml version="1.0" encoding="utf-8"?>
<android.widget.TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="1"
    tools:context="com.example.dhanya.uitablelayout.MainActivity">
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:text="Time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0" />
        <TextClock
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textClock"
            android:layout_column="1" />
    </TableRow>
    <TableRow>
        <TextView
            android:text="First Name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0" />
        <EditText
            android:width="200px"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </TableRow>
    <TableRow>
        <TextView
            android:text="Last Name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0" />
        <EditText
            android:width="100px"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </TableRow>
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <RatingBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_span="2"
            android:id="@+id/ratingBar"
            android:layout_column="0" />
    </TableRow>
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Submit"
            android:layout_span="2"
            android:id="@+id/button"
            android:layout_column="0" />
    </TableRow>
</android.widget.TableLayout>

0

La cosa migliore che ho trovato è impostare il dispositivo su personalizzato. Quindi possiamo modificare il layout semplicemente trascinando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.