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?

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


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.


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

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


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.


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


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"

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.


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


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)

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>

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!


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>

0

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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.