Das fertige Ansichtslayout kann in Android Studio nicht angezeigt werden


89

Ich erstelle ein vertikales LinearLayout, das in einer vertikalen ScrollView angezeigt wird. Ich kann in Android Studio keine Möglichkeit finden, den Teil des LinearLayout zu sehen, der sich unter dem unteren Rand der ScrollView befindet. Gibt es eine Möglichkeit, das vollständige Layout anzuzeigen, anstatt es auf das vom Renderer bereitgestellte Ansichtsfenster zu beschränken?

Antworten:


66

Wie Drew sagte, war das Erstellen einer benutzerdefinierten Gerätedefinition die einzige Lösung, die für mich funktioniert hat. Im Folgenden zeige ich Ihnen die folgenden Schritte:

Schritt 1) ​​Öffnen Sie im Vorschaufenster das Dropdown- Menü Auswahl virtueller Geräte und wählen Sie Gerätedefinition hinzufügen.

Geben Sie hier die Bildbeschreibung ein

Schritt 2) Klicken Sie im Dialogfeld Ihre virtuellen Geräte auf die Schaltfläche Virtuelles Gerät erstellen .

Geben Sie hier die Bildbeschreibung ein

Schritt 3) Klicken Sie im Dialogfeld Hardware auswählen auf die Schaltfläche Neues Hardwareprofil .

Geben Sie hier die Bildbeschreibung ein

Schritt 4) Geben Sie im Dialogfeld " Hardwareprofil konfigurieren " (z. B.) eine Auflösung von 720 x 4000 px und eine Bildschirmgröße von 12 Zoll an. Auch das Einstellen der Bildschirmgröße führt zu einer Dichte von xhdpi (dank Mete).

Geben Sie hier die Bildbeschreibung ein

Schritt 5) Schließen Sie alle Dialoge und starten Sie Android Studio neu. Schritt 6) Öffnen Sie das Dropdown- Menü Auswahl virtueller Geräte . Das neue benutzerdefinierte Hardwareprofil finden Sie unter Generische Telefone und Tablets . Geben Sie hier die Bildbeschreibung ein


1
Vielen Dank für Ihre Antwort mit allen Bildern und hilfreichen Beschreibungen
Roozbeh Zabihollahi

kann keinen Ort sehen, um Höhe hinzuzufügen
Lasitha Lakmal

37

Ich habe gerade entdeckt, wie. Sie müssen eine benutzerdefinierte Gerätedefinition in Android AVD erstellen. Ich habe eine mit 480 x 4000 Pixel erstellt. Beenden Sie Android Studio und starten Sie es neu. Anschließend können Sie dieses Gerät im Vorschau-Renderer auswählen und LinearLayout im Wert von 4000 Pixel anzeigen.


+1, da ich meine Ansicht nicht auseinander genommen und die Notwendigkeit des Neustarts angegeben habe.
Iain Smith

Dies ist die einzig geeignete Lösung, die ich bisher gefunden habe. Es gibt ein Problem; Wenn Android Studio diese Auflösung verwendet, wird die Dichte automatisch auf xxxhdpi eingestellt. Gibt es eine Möglichkeit, die Dichte auf hdpi zurückzusetzen? Ich benutze Android Studio v1.2
Brabbeldas

2
@Brabbeldas Wenn Sie das Profil erstellen, können Sie die Breite und Höhe in Pixel angeben, aber Sie können auch die "Bildschirmgröße" in Zoll angeben, und die Kombination dieser Einstellungen legt die Dichte fest. Zum Beispiel habe ich meine auf 480x4000 mit einer Bildschirmgröße von 16 Zoll eingestellt und dies gibt mir HDPI
Mete

Ich habe eine neue Antwort mit Screenshots hinzugefügt, die beschreiben, wie die benutzerdefinierte Gerätedefinition erstellt wird. @Drew, wenn Sie es für andere nützlich finden, können Sie akzeptieren, ist als die richtige Antwort.
Brabbeldas

Wunderbar! Bei mir hat die Größenänderung einmal nicht funktioniert! Und die folgende Antwort stackoverflow.com/a/31582758/1752988 war auch hilfreich!
Randika Vishman

30

Finden Sie eine einfachere Lösung , layoutindem Sie etwas wie das Folgende hinzufügen und nach Bedarf anpassen:

android:layout_marginTop="-1500dp"

16
Beste Antwort, aber es wäre besser, wenn Sie Folgendes verwenden: tools: layout_marginTop = "- 1500dp". Auf diese Weise gilt der negative Bildlauf nur für den Layout-Editor und nicht zur Laufzeit.
Leandro Glossman

Nützlich, wenn die von @Eric erwähnte Schaltfläche nicht verfügbar ist.
Chintan Shah

18

In der neuen Version von Android Studio (ich weiß nicht von welcher Version, aber ich verwende jetzt die neueste Version 2.3.3) können Sie die Größe Ihres Vorschau-Layouts durch Ziehen ändern

Geben Sie hier die Bildbeschreibung ein


7
+1 funktionierte für mich, musste aber das Gerät im obigen GIF von Nexus 4 manuell auf "Benutzerdefiniert" ändern, damit die Drag-Schaltfläche angezeigt wurde.
Songo

17

Android Studio bietet eine umschaltbare Vollansicht, wenn die ScrollView die Wurzel des Layouts ist. Ich hatte meine auf das Standard-RelativeLayout gesetzt und musste dies manuell im XML korrigieren, bevor die GUI mir die vollständige Ansicht geben würde.


Wie findest du das?
Mszaro

1
@MattSzaro Ich erinnere mich nicht, wo ich die Informationen gefunden habe, aber wenn Sie meinen, wo Sie das XML finden, um es zu ändern, sodass die Bildlaufansicht das Stammelement ist, befinden sich unten zwei Registerkarten, wenn Sie die XML-Datei für eine Ansicht öffnen: "Design" und "Text". Klicken Sie auf "Text". Wenn Sie meinen, wo sich der Schalter befindet, nachdem Sie die Änderung vorgenommen haben, müssen Sie das Projekt wahrscheinlich einmal schließen und erneut öffnen (möglicherweise). In "Design" befindet sich dann die Schaltfläche ganz links in der zweiten Zeile der Symbolleiste mit einem Symbol das sieht aus wie ein dreispaltiges Stück Papier oder so: "Viewport Render Mode umschalten".
Davidgro

1
@davidgro, das Suchen der Option in der Symbolleiste ist das, wonach ich gesucht habe. Danke dir! Das hat wirklich geholfen.
Mszaro

1
In Kombination mit der Technik unter " Wiederverwenden von Layouts mit<include/> " können wir ein ElementScrollView in der Mitte eines Layouts in eine separate XML-Datei extrahieren und vollständig anzeigen.
Pang

Was ist, wenn Ihre Bildlaufansicht nicht die Stammansicht ist? Ich wünschte, sie würden das ganze blutige Ding erweitern und einfach einen Umriss des Telefonbildschirms darüber legen, um den sichtbaren Bereich anzuzeigen.
JPM

17

Ich hoffe der Screenshot hilft dir:

Bildschirmfoto


4
Fehlt diese Schaltfläche, wenn ich auf meine scrollView im Komponentenbaum
klicke

8
Ich habe gerade festgestellt, dass die Bildlaufansicht die oberste Ebene sein muss, um die Schaltfläche anzuzeigen. Danke Eric!
user3491799

Die Vollansicht-Option löst mein Problem für vertikale Bildlaufansichten. Ich habe jedoch eine eingebettete horizontale Bildlaufansicht, die nur teilweise sichtbar ist (der Rest erstreckt sich nach rechts außerhalb der Ansicht). Gibt es eine Möglichkeit, dies zu lösen, ohne die Option Benutzerdefiniertes Gerät zu verwenden ?
Essah

1
Dies ist die perfekte Antwort. es ist besser als das sehr hohe Geräteprofil. und ist verfügbar in Android Studio 0.1.7+
Ninja

12

Sie können das scrollY-Attribut verwenden, um die ScrollView in der Vorschau zu scrollen. Wenn Sie das scrollY-Attribut mit dem Tools-Namespace verwenden, wird nur die Ansicht in der Anzeige und nicht in der eigentlichen App gescrollt. Und stellen Sie sicher, dass Sie px als Einheit mit dem scrollY-Attribut verwenden.

tools:scrollY="150px"

5

Update: Jetzt können Sie eine ScrollView direkt im Vorschaufenster scrollen (ich habe sie auf Android Studio Version 2.3.2 getestet).

Kurze Antwort: Klicken Sie mit der rechten Maustaste auf Ihre ScrollView und wählen Sie Refactor> Extrahieren> Layout .

Android-Studio extrahiert Ihre ScrollView in eine neue Layoutdatei und fügt das tools:showIn="@layout/original_layout_file"Attribut in das Root-Layout (Ihre ScrollView) ein.

Hinweis: Android-Studio zeigt eine Vorschau des vollständigen Layouts an, wenn das Root-Layout ScrollView ist.


1
@ Tequilaman Wenn Sie Android Studio Version 2.3.2 verwenden, können Sie den Inhalt von ScrollView mit einem Mausrad im Vorschaufenster
scrollen

4

In Android Studio Version 3.2.1 können Sie im Vorschaufenster "Benutzerdefiniertes" Gerät auswählen und dann die Vorschau auf die gewünschte Höhe anpassen.

Beispiel für eine benutzerdefinierte Vorschau für Android Studio


1
das ist der einfachste Weg! Beste.
Noor Hossain

2
  • Klicken Sie auf die scrollView im Komponentenbaum (rechts).
  • Klicken Sie auf die neue Schaltfläche, die links angezeigt wird (zweite Zeile der Symbolleiste).

1
Könntest du einen Screenshot hinzufügen? Ich kann keine neue Schaltfläche sehen.
Brabbeldas

@Brabbeldas die neue Schaltfläche namens "Viewport Render-Modus umschalten". Vielleicht helfen Sie stackoverflow.com/a/30443662/1323374
Ninja

1

Eine andere schnelle alternative Lösung besteht darin, die Layouts vorübergehend oben auszublenden, damit die Layouts unten im sichtbaren Fenster von Android Studio angezeigt werden.

Legen Sie android:visibility="gone"die Layouts an, die Sie ausblenden möchten.

Beispiel:

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

Dies ist eine sehr unangenehme Lösung ... Tun Sie dies nicht, zumindest ist dies äußerst notwendig.
Joaquin Iurchuk

1
Verwenden Sie tools:visibility="gone".
dnp

0

Ich könnte zu spät kommen, aber es wird für Sie viel einfacher sein, die Ränder auf negativ zu setzen, um die Bildlaufansicht nach links zu verschieben.

Beispielsweise:

Spanne:

links: -100px

Jetzt können Sie die Bildlaufansicht sehen und bearbeiten, wie Sie möchten!


0

TABELLENLAYOUT

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

Das Beste, was ich gefunden habe, ist, das Gerät auf Benutzerdefiniert einzustellen. Dann können wir das Layout einfach durch Ziehen ändern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.