Невозможно увидеть готовый макет представления в Android Studio


91

Я создаю вертикальный LinearLayout, который будет отображаться в вертикальном ScrollView. Я не могу найти способ в Android Studio увидеть часть LinearLayout, которая находится ниже нижней части ScrollView. Есть ли способ увидеть полный макет, а не ограничивать его областью просмотра, предоставляемой средством визуализации?

Ответы:


66

Как сказал Дрю, создание пользовательского определения устройства было единственным решением, которое сработало для меня. Ниже я покажу вам, что нужно делать:

Шаг 1) На панели предварительного просмотра откройте раскрывающийся список « Выбор виртуального устройства» и выберите « Добавить определение устройства».

введите описание изображения здесь

Шаг 2) В диалоговом окне « Ваши виртуальные устройства » нажмите кнопку « Создать виртуальное устройство» .

введите описание изображения здесь

Шаг 3) В диалоговом окне « Выбор оборудования » нажмите кнопку « Новый профиль оборудования» .

введите описание изображения здесь

Шаг 4) В диалоговом окне « Настройка профиля оборудования » укажите (например) разрешение 720 x 4000 пикселей и размер экрана 12 дюймов. Также установка результаты в Размер экрана плотности от xhdpi (благодаря Мете).

введите описание изображения здесь

Шаг 5) Закройте все диалоги и перезапустите Android Studio. Шаг 6) Откройте раскрывающийся список « Выбор виртуального устройства» . Новый пользовательский профиль оборудования можно найти в разделе " Общие телефоны и планшеты". . введите описание изображения здесь


1
Спасибо за ваш ответ со всеми изображениями и полезными описаниями
Рузбех Забихоллахи,

нет места, где можно было бы прибавить рост
Ласита Лакмал

37

Я только что понял, как это сделать. Вам нужно создать определяемое пользователем определение устройства в Android AVD - я создал определение размером 480 x 4000 пикселей. Выйдите и перезапустите Android Studio, затем вы можете выбрать это устройство в средстве предварительного просмотра и увидеть LinearLayout размером 4000 пикселей.


+1 так как я не разбирал свой взгляд и за то, что заявил о необходимости перезагрузки.
Iain Smith

Это единственное подходящее решение, которое я нашел до сих пор. Есть одна проблема; Android Studio при использовании этого разрешения автоматически устанавливает плотность на xxxhdpi. Есть ли способ вернуть плотность на hdpi? Я использую Android Studio v1.2
Браббельдас

2
@Brabbeldas, когда вы создаете профиль, вы можете указать ширину и высоту в пикселях, но вы также можете указать «Размер экрана» в дюймах, и комбинация этих настроек устанавливает плотность. Например, я установил свой 480x4000 с размером экрана 16 дюймов, и это дает мне hdpi
Mete

Я добавил новый ответ со снимками экрана, описывающими, как создать определение устройства, определяемое пользователем. @Drew, если вы сочтете это полезным для других, вы можете принять это как правильный ответ.
Brabbeldas

Замечательно! Для меня изменение размера однажды не сработало! И ответ ниже stackoverflow.com/a/31582758/1752988 Также был полезен!
Рандика Вишман

31

Нашел более простое решение , layoutдобавьте что-то вроде ниже и отрегулируйте по мере необходимости:

android:layout_marginTop="-1500dp"

17
Лучший ответ, но было бы лучше, если бы вы использовали: tools: layout_marginTop = "- 1500dp". Таким образом, отрицательная прокрутка применяется только к редактору макета, а не во время выполнения.
Леандро Глоссман,

Полезно, когда кнопка, упомянутая @Eric, недоступна.
Чинтан Шах

19

в новой версии студии Android (я не знаю, из какой версии, но сейчас я использую последнюю версию 2.3.3) вы можете изменить размер макета предварительного просмотра, перетащив его

введите описание изображения здесь


7
+1 сработал для меня, но мне пришлось вручную изменить устройство в приведенном выше гифке с nexus 4 на "Custom", чтобы отображалась кнопка перетаскивания.
Сонго

17

Android Studio предложит переключаемый полный вид, если ScrollView является корнем макета. Я поставил свой поверх RelativeLayout по умолчанию и должен был вручную исправить это в XML, прежде чем графический интерфейс предоставит мне полное представление.


Как ты это нашел?
mszaro

1
@MattSzaro Я не помню, где я нашел информацию, но если вы имеете в виду, где найти XML, чтобы изменить его, так что scrollview является корневым элементом, есть две вкладки внизу, когда вы открываете .xml для представления: «Дизайн» и «Текст». Щелкните "Текст". Если вы имеете в виду, где найти переключатель после внесения изменений, я думаю, вам нужно закрыть и снова открыть проект один раз (возможно), а затем в «Дизайн» это самая левая кнопка во втором ряду панели инструментов со значком это выглядит как лист бумаги с тремя столбцами или что-то в этом роде: «Toggle Viewport Render Mode».
Дэвидгро

1
@davidgro, я искал эту опцию на панели инструментов. Спасибо! Это действительно помогло.
mszaro

1
В сочетании с техникой из « Повторного использования макетов с<include/> » мы можем извлечь ScrollViewв середине макета в отдельный XML-файл и просмотреть его полностью.
Панг

Что делать, если ваш scrollview не является корневым. Хотелось бы, чтобы они развернули всю эту чертову штуку и просто поместили контур экрана телефона поверх, чтобы показать видимую область.
JPM

17

Надеюсь, скриншот вам поможет:

снимок экрана


4
отсутствует эта кнопка, когда я нажимаю на свой scrollView в дереве компонентов
user3491799

8
Только что обнаружил, что scrollview должен быть верхним слоем, чтобы отображалась кнопка. Спасибо, Эрик!
user3491799

Параметр полного просмотра решает мою проблему для представлений с вертикальной прокруткой, однако у меня есть встроенный вид с горизонтальной прокруткой, который все еще виден только частично (остальные простираются вправо вне поля зрения) Есть ли способ решить эту проблему без использования параметра Пользовательское устройство ?
Essah

1
Это идеальный ответ. это лучше, чем очень высокий профиль устройства. и доступен в Android Studio 0.1.7+
Ninja

12

Вы можете использовать атрибут scrollY для прокрутки ScrollView в предварительном просмотре. Использование атрибута scrollY с пространством имен инструментов будет прокручивать только представление на дисплее, а не в реальном приложении. И убедитесь, что вы используете px в качестве единицы с атрибутом scrollY.

tools:scrollY="150px"

5

Обновление: теперь вы можете прокручивать ScrollView прямо внутри панели предварительного просмотра (я тестировал на Android Studio версии 2.3.2)

Краткий ответ: щелкните правой кнопкой мыши ScrollView и выберите Refactor> Extract> Layout .

Android-studio извлечет ваш ScrollView в новый файл макета и поместит tools:showIn="@layout/original_layout_file"атрибут в корневой макет (ваш ScrollView).

Примечание. Android-studio будет предварительно просматривать полный макет, если корневой макет - ScrollView.


1
@Tequilaman Если вы используете Android Studio версии 2.3.2, вы можете прокручивать содержимое ScrollView с помощью колесика мыши на панели предварительного просмотра
Momepukku

4

В Android Studio версии 3.2.1 вы можете выбрать «Пользовательское» устройство на панели предварительного просмотра, а затем изменить размер предварительного просмотра до нужной вам высоты.

пример пользовательского предварительного просмотра студии Android


1
это самый простой способ! Лучший.
Нур Хоссейн,

2
  • нажмите на scrollView в дереве компонентов (справа)
  • нажмите на новую кнопку, которая появится слева (вторая строка панели инструментов)

1
не могли бы вы добавить скриншот? Я не вижу никаких новых кнопок.
Браббельдас

@Brabbeldas новая кнопка под названием «переключить режим рендеринга области просмотра». Может помочь вам stackoverflow.com/a/30443662/1323374
Ninja

1

Еще одно быстрое альтернативное решение - временно скрыть макеты вверху, чтобы макеты внизу могли отображаться в видимом окне в Android Studio.

Нанесите android:visibility="gone"макеты, которые хотите скрыть.

Пример:

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

Это очень неудобное решение ... Не делайте этого, по крайней мере, крайне необходимо.
Хоакин Юрчук

1
Используйте tools:visibility="gone".
dnp

0

Возможно, я опоздаю, но вам будет намного проще просто установить отрицательные поля, чтобы сместить вид прокрутки влево.

Например:

прибыль:

слева: -100px

Теперь вы можете просматривать и редактировать прокрутку, как вам нравится!


0

ПЛАН ТАБЛИЦЫ

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

Лучшее, что я нашел, - это настроить устройство на заказ. Затем мы можем изменить макет простым перетаскиванием.


0

У меня длинный макет, и мне нужно прокручивать макет даже при использовании вертикального длинного разрешения и мне и когда я устанавливаю редактор макета на высокое разрешение, экран не прокручивается полностью и плавно

Установив макет на 3.2_HVGA_slider_ADP1_API_27 , экран прокручивался, и моя проблема была решена

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.