Nie można zobaczyć ukończonego układu widoku w Android Studio

91

Tworzę pionowy LinearLayout, który będzie wyświetlany w pionowym ScrollView. W Android Studio nie mogę znaleźć sposobu, aby zobaczyć część LinearLayout, która znajduje się poniżej dolnej części ScrollView. Czy istnieje sposób, aby zobaczyć pełny układ zamiast ograniczać go do widoku dostarczonego przez mechanizm renderujący?

rysował
źródło

Odpowiedzi:

66

Jak powiedział Drew, jedynym rozwiązaniem, które zadziałało, było utworzenie definicji urządzenia zdefiniowanej przez użytkownika. Poniżej przedstawiam kroki, które należy wykonać:

Krok 1) W okienku podglądu otwórz listę rozwijaną Wybór urządzenia wirtualnego i wybierz Dodaj definicję urządzenia.

wprowadź opis obrazu tutaj

Krok 2) W oknie dialogowym Twoje urządzenia wirtualne kliknij przycisk Utwórz urządzenie wirtualne .

wprowadź opis obrazu tutaj

Krok 3) W oknie dialogowym Wybierz sprzęt kliknij przycisk Nowy profil sprzętu .

wprowadź opis obrazu tutaj

Krok 4) W oknie dialogowym Konfiguruj profil sprzętu określ (np.) Rozdzielczość 720 x 4000 pikseli i rozmiar ekranu 12 cali. Ustawienie również wyniki Rozmiar ekranu w gęstości od xhdpi (dzięki Mete).

wprowadź opis obrazu tutaj

Krok 5) Zamknij wszystkie okna dialogowe i uruchom ponownie Android Studio. Krok 6) Otwórz listę rozwijaną Wybór urządzenia wirtualnego . Nowy profil sprzętowy zdefiniowany przez użytkownika można znaleźć w sekcji Ogólne telefony i tablety . wprowadź opis obrazu tutaj

Brabbeldas
źródło
1
Dziękuję za odpowiedź ze wszystkimi zdjęciami i pomocnymi opisami
Roozbeh Zabihollahi
nie widzę żadnego miejsca do dodania wysokości
Lasitha Lakmal
37

Właśnie odkryłem, jak to zrobić. Musisz utworzyć definicję urządzenia zdefiniowaną przez użytkownika w Android AVD - utworzyłem taką, która miała 480 x 4000 pikseli. Wyjdź i uruchom ponownie Android Studio, a następnie możesz wybrać to urządzenie w rendererze podglądu i zobaczyć LinearLayout o wartości 4000 pikseli.

rysował
źródło
+1, ponieważ nie rozebrałem mojego widoku i stwierdziłem potrzebę ponownego uruchomienia.
Iain Smith
To jedyne odpowiednie rozwiązanie, jakie do tej pory znalazłem. Jest jeden problem; Android Studio podczas korzystania z tej rozdzielczości automatycznie ustawia gęstość na xxxhdpi. Czy istnieje sposób, aby ustawić gęstość z powrotem na hdpi? Używam Android Studio v1.2
Brabbeldas
2
@Brabbeldas podczas tworzenia profilu możesz podać szerokość i wysokość w pikselach, ale możesz też podać „Rozmiar ekranu” w calach, a kombinacja tych ustawień ustawia gęstość. Na przykład ustawiłem mój na 480x4000 z ekranem o przekątnej 16 cali, co daje mi hdpi
Mete
Dodałem nową odpowiedź ze zrzutami ekranu opisującymi, jak utworzyć definicję urządzenia zdefiniowaną przez użytkownika. @Drew, jeśli uznasz to za przydatne dla innych, możesz zaakceptować jako poprawną odpowiedź.
Brabbeldas
Wspaniale! Dla mnie zmiana rozmiaru raz nie zadziałała! A poniżej odpowiedź stackoverflow.com/a/31582758/1752988 Również była pomocna!
Randika Vishman,
31

Znalazłem łatwiejsze rozwiązanie , layoutdodaj coś takiego jak poniżej i dostosuj według potrzeb:

android:layout_marginTop="-1500dp"
Tiago Pádua
źródło
17
Najlepsza odpowiedź, ale byłoby lepiej, gdybyś użył: tools: layout_marginTop = "- 1500dp". W ten sposób przewijanie negatywne dotyczy tylko edytora układu, a nie środowiska wykonawczego.
Leandro Glossman
Przydatne, gdy przycisk wspomniany przez @Eric nie jest dostępny.
Chintan Shah
19

w nowej wersji Android Studio (nie wiem z której wersji, ale teraz używam najnowszej wersji 2.3.3) możesz zmienić rozmiar podglądu układu, przeciągając go

wprowadź opis obrazu tutaj

Nabil Baadillah
źródło
7
+1 działało dla mnie, ale musiałem ręcznie zmienić urządzenie w powyższym gifie z Nexusa 4 na „Niestandardowe”, aby przycisk przeciągania był widoczny.
Songo
17

Android Studio będzie oferować przełączany pełny widok, jeśli ScrollView jest katalogiem głównym układu. Położyłem mój na domyślnym RelativeLayout i musiałem ręcznie naprawić to w XML, zanim GUI da mi pełny widok.

davidgro
źródło
Jak to znajdujesz?
mszaro
1
@MattSzaro Nie pamiętam, gdzie znalazłem informacje, ale jeśli masz na myśli, gdzie znaleźć XML, aby go zmienić, aby widok przewijania był elementem głównym, na dole są dwie zakładki, gdy otwierasz .xml dla widoku: „Projekt” i „Tekst”. Kliknij „Tekst”. Jeśli masz na myśli, gdzie znaleźć przełącznik po dokonaniu zmiany, myślę, że musisz raz (być może) zamknąć i ponownie otworzyć projekt, a następnie w sekcji „Projekt” jest to skrajny lewy przycisk w drugim rzędzie paska narzędzi, z ikoną wygląda na trzykolumnową kartkę papieru lub coś w tym stylu: „Przełącz tryb renderowania rzutni”.
davidgro
1
@davidgro, znajdowanie opcji na pasku narzędzi jest tym, czego szukałem. Dziękuję Ci! To naprawdę pomogło.
mszaro
1
W połączeniu z techniką opisaną w „ Ponowne użycie układów z<include/> ”, możemy wyodrębnić ScrollVieww środku układu do oddzielnego pliku XML i wyświetlić go w całości.
Pang
Co się stanie, jeśli widok przewijania nie jest widokiem głównym. Chciałbym, żeby rozszerzyli całą cholerną rzecz i po prostu umieścili zarys ekranu telefonu na górze, aby pokazać widoczny obszar.
JPM
17

Mam nadzieję, że zrzut ekranu ci pomoże:

zrzut ekranu

Eric JOYÉ
źródło
4
brakuje tego przycisku po kliknięciu mojego
scrollView w
8
Właśnie odkryłem, że widok przewijania musi być najwyższą warstwą, aby wyświetlić przycisk. Thx Eric!
user3491799
Opcja pełnego widoku rozwiązuje mój problem z widokami przewijania w pionie, jednak mam osadzony widok przewijania w poziomie, który jest nadal tylko częściowo widoczny (reszta rozciąga się na prawo poza widokiem) Czy istnieje sposób rozwiązania tego problemu bez korzystania z opcji Urządzenie niestandardowe ?
Essah
1
To jest doskonała odpowiedź. jest lepszy niż profil urządzenia o dużej wysokości. i jest dostępny w Android Studio 0.1.7+
Ninja
12

Możesz użyć atrybutu scrollY, aby przewijać ScrollView w podglądzie. Użycie atrybutu scrollY z przestrzenią nazw narzędzi spowoduje przewijanie tylko widoku na wyświetlaczu, a nie w samej aplikacji. I upewnij się, że używasz px jako jednostki z atrybutem scrollY.

tools:scrollY="150px"
Rakshit Tanti
źródło
5

Aktualizacja: teraz możesz przewijać ScrollView bezpośrednio w panelu podglądu (testowałem na Android Studio w wersji 2.3.2)

Krótka odpowiedź: Kliknij prawym przyciskiem myszy ScrollView i wybierz Refaktoryzuj> Wyodrębnij> Układ .

Android-studio wyodrębni Twój ScrollView do nowego pliku układu i umieści tools:showIn="@layout/original_layout_file" atrybut w układzie głównym (Twoim ScrollView).

Uwaga: Android-studio wyświetli podgląd pełnego układu, jeśli układ główny to ScrollView.

Momepukku
źródło
1
@Tequilaman Jeśli używasz Android Studio w wersji 2.3.2, możesz przewijać zawartość
ScrollView
4

W Android Studio w wersji 3.2.1 możesz wybrać urządzenie „Niestandardowe” w panelu podglądu, a następnie zmienić rozmiar podglądu na dowolną wysokość.

Przykład niestandardowego podglądu Android Studio

seyedrezafar
źródło
1
to najłatwiejszy sposób! Najlepsza.
Noor Hossain
2
  • kliknij scrollView w drzewie zgodności (po prawej)
  • kliknij nowy przycisk, który pojawi się po lewej stronie (drugi rząd paska narzędzi)
Eric JOYÉ
źródło
1
czy mógłbyś dodać zrzut ekranu? nie widzę żadnego nowego przycisku.
Brabbeldas
@Brabbeld jako nowy przycisk o nazwie „przełącz tryb renderowania okna widoku”. Może pomóc ci stackoverflow.com/a/30443662/1323374
Ninja
1

Innym szybkim alternatywnym rozwiązaniem jest tymczasowe ukrycie układów u góry, aby układy u dołu mogły pojawić się w widocznym oknie w Android Studio.

Załóż android:visibility="gone"układy, które chcesz ukryć.

Przykład:

<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
źródło
To bardzo niewygodne rozwiązanie ... Nie rób tego przynajmniej jest niezwykle konieczne.
Joaquin Iurchuk
1
Użyj tools:visibility="gone".
dnp
0

Mogę się spóźnić, ale o wiele łatwiej będzie Ci po prostu ustawić marginesy na ujemne, aby przesunąć widok przewijania w lewo.

Na przykład:

margines:

po lewej: -100px

Teraz możesz przeglądać i edytować widok przewijania w dowolny sposób!

Mak Khan
źródło
0

UKŁAD STOŁU

<?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
źródło
0

Najlepsze, co znalazłem, to ustawienie urządzenia na niestandardowe. Następnie możemy zmienić układ po prostu przeciągając.

Bibin Johny
źródło
0

Mój układ jest długi i wymaga przewijania układu nawet przy użyciu długiej rozdzielczości w pionie, a kiedy ustawię edytor układu na wysokie rozdzielczości, ekran nie przewija się całkowicie i płynnie

Ustawiając układ na 3.2_HVGA_slider_ADP1_API_27 , ekran przewijał się i mój problem został rozwiązany

ZIRES
źródło