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?

zeichnete
quelle

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

Brabbeldas
quelle
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.

zeichnete
quelle
+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"
Tiago Pádua
quelle
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

Nabil Baadillah
quelle
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.

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

Eric JOYÉ
quelle
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"
Rakshit Tanti
quelle
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.

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

seyedrezafar
quelle
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).
Eric JOYÉ
quelle
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>
BlueDroidy
quelle
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!

Mak Khan
quelle
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>
Harsha
quelle
0

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

Bibin Johny
quelle