No se puede ver el diseño de vista completo en Android Studio

91

Estoy creando un LinearLayout vertical que se mostrará en un ScrollView vertical. No puedo encontrar una manera en Android Studio de ver la parte de LinearLayout que está debajo de la parte inferior de ScrollView. ¿Hay alguna forma de ver el diseño completo en lugar de limitarlo a la ventana gráfica proporcionada por el renderizador?

dibujó
fuente

Respuestas:

66

Como dijo Drew, crear una definición de dispositivo definida por el usuario ha sido la única solución que funcionó para mí. A continuación te muestro los pasos a seguir:

Paso 1) Dentro del panel de vista previa, abra el menú desplegable Selección de dispositivo virtual y seleccione Agregar definición de dispositivo.

ingrese la descripción de la imagen aquí

Paso 2) Dentro del cuadro de diálogo Sus dispositivos virtuales, haga clic en el botón Crear dispositivo virtual .

ingrese la descripción de la imagen aquí

Paso 3) Dentro del cuadro de diálogo Seleccionar hardware, haga clic en el botón Nuevo perfil de hardware .

ingrese la descripción de la imagen aquí

Paso 4) En el cuadro de diálogo Configurar perfil de hardware, especifique (fe) una resolución de 720 x 4000 px y un tamaño de pantalla de 12 pulgadas. También establecer el tamaño de pantalla da como resultado una densidad de xhdpi (gracias a Mete).

ingrese la descripción de la imagen aquí

Paso 5) Cierre todos los cuadros de diálogo y reinicie Android Studio. Paso 6) Abra el menú desplegable Selección de dispositivo virtual . El nuevo perfil de hardware definido por el usuario se puede encontrar en Teléfonos y tabletas genéricos . ingrese la descripción de la imagen aquí

Brabbeldas
fuente
1
Gracias por su respuesta con todas las imágenes y descripciones útiles
Roozbeh Zabihollahi
no puedo ver ningún lugar para agregar altura
Lasitha Lakmal
37

Acabo de descubrir cómo. Debe crear una definición de dispositivo definida por el usuario en Android AVD; creé una que tenía 480 x 4000 píxeles. Salga y reinicie Android Studio y luego puede seleccionar este dispositivo en el renderizador de vista previa y puede ver 4000 píxeles de LinearLayout.

dibujó
fuente
+1 por no haber desarmado mi vista y por declarar la necesidad de reiniciar.
Iain Smith
Esta es la única solución adecuada que he encontrado hasta ahora. Hay un problema; Android Studio, cuando usa esta resolución, establece automáticamente la densidad en xxxhdpi. ¿Hay alguna forma de volver a establecer la densidad en hdpi? Estoy usando Android Studio v1.2
Brabbeldas
2
@Brabbeldas cuando crea el perfil, puede dar el ancho y el alto en píxeles, pero también puede dar el "Tamaño de pantalla" en pulgadas, y la combinación de estas configuraciones establece la densidad. Por ejemplo, configuré el mío en 480x4000 con un tamaño de pantalla de 16 pulgadas y esto me da hdpi
Mete
Agregué una nueva respuesta con capturas de pantalla que describen cómo crear la definición de dispositivo definida por el usuario. @Drew, si lo encuentra útil para otros, puede aceptarlo como la respuesta correcta.
Brabbeldas
¡Maravilloso! ¡Para mí, cambiar el tamaño una vez no funcionó! Y la siguiente respuesta stackoverflow.com/a/31582758/1752988 ¡ También fue útil!
Randika Vishman
31

Encontré una solución más fácil , layoutagregue algo como a continuación y ajuste según lo necesite:

android:layout_marginTop="-1500dp"
Tiago Pádua
fuente
17
La mejor respuesta, pero sería mejor si usa: tools: layout_marginTop = "- 1500dp". De esta manera, el desplazamiento negativo solo se aplica al editor de diseño y no en tiempo de ejecución.
Leandro Glossman
Útil cuando el botón mencionado por @Eric no está disponible.
Chintan Shah
19

en la nueva versión de Android Studio (no sé de qué versión, pero estoy usando la última 2.3.3 ahora) puede cambiar el tamaño de su diseño de vista previa arrastrándolo

ingrese la descripción de la imagen aquí

Nabil Baadillah
fuente
7
+1 funcionó para mí, pero tuve que cambiar el dispositivo en el gif anterior de nexus 4 a "Personalizado" manualmente para que se muestre el botón de arrastre.
Songo
17

Android Studio ofrecerá una vista completa conmutable, si ScrollView es la raíz del diseño. Puse el mío encima del RelativeLayout predeterminado y tuve que arreglarlo manualmente en el XML antes de que la GUI me diera la vista completa.

davidgro
fuente
¿Cómo encuentras esto?
mszaro
1
@MattSzaro No recuerdo dónde encontré la información, pero si te refieres a dónde encontrar el XML para cambiarlo para que la vista de desplazamiento sea el elemento raíz, hay dos pestañas en la parte inferior cuando abres el .xml para una vista: "Diseño" y "Texto". Haga clic en "Texto". Si te refieres a dónde encontrar la palanca una vez que hayas realizado el cambio, creo que debes cerrar y volver a abrir el proyecto una vez (tal vez) y luego en "Diseño" es el botón más a la izquierda en la segunda fila de la barra de herramientas, con un icono que parece una hoja de papel de tres columnas o algo así: "Alternar el modo de renderizado de la ventana gráfica".
davidgro
1
@davidgro, localizar la opción en la barra de herramientas es lo que estaba buscando. ¡Gracias! Esto realmente ayudó.
mszaro
1
Combinado con la técnica de " Reutilización de diseños con<include/> ", podemos extraer un ScrollViewen medio de un diseño a un archivo XML separado y verlo en su totalidad.
Pang
¿Qué pasa si su vista de desplazamiento no es la vista raíz? Ojalá expandieran toda la maldita cosa y simplemente pusieran un contorno de la pantalla del teléfono en la parte superior para mostrar el área visible.
JPM
17

Espero que la captura de pantalla te ayude:

captura de pantalla

Eric JOYÉ
fuente
4
falta este botón cuando hago clic en mi scrollView en el árbol de componentes
user3491799
8
Acabo de encontrar que scrollview debe ser la capa superior para poder mostrar el botón. ¡Gracias Eric!
user3491799
La opción de vista completa resuelve mi problema para las vistas de desplazamiento vertical, sin embargo, tengo una vista de desplazamiento horizontal incrustada que todavía es solo parcialmente visible (el resto se extiende hacia la derecha fuera de la vista) ¿Hay alguna manera de resolver esto sin usar la opción de dispositivo personalizado? ?
Essah
1
Esta es la respuesta perfecta. es mejor que el perfil de dispositivo muy alto. y está disponible en Android Studio 0.1.7+
Ninja
12

Puede utilizar el atributo scrollY para desplazar ScrollView en la vista previa. El uso del atributo scrollY con el espacio de nombres de las herramientas solo desplazará la vista en la pantalla y no en la aplicación real. Y asegúrese de usar px como unidad con el atributo scrollY.

tools:scrollY="150px"
Rakshit Tanti
fuente
5

Actualización: ahora puede desplazarse por un ScrollView directamente dentro del panel de vista previa (lo probé en la versión 2.3.2 de Android Studio)

Respuesta corta: haga clic derecho en su ScrollView y seleccione Refactor> Extraer> Diseño .

Android-studio extraerá su ScrollView en un nuevo archivo de diseño y colocará tools:showIn="@layout/original_layout_file" atributo en el diseño raíz (su ScrollView).

Nota: Android-studio obtendrá una vista previa del diseño completo si el diseño raíz es ScrollView.

Momepukku
fuente
1
@Tequilaman Si está utilizando la versión 2.3.2 de Android Studio, puede desplazarse por el contenido de ScrollView usando la rueda del mouse en el panel de vista previa
Momepukku
4

En la versión 3.2.1 de Android Studio, puede seleccionar el dispositivo "Personalizado" en el panel de vista previa y luego cambiar el tamaño de la vista previa a la altura que necesite.

ejemplo de vista previa personalizada de Android Studio

seyedrezafar
fuente
1
¡Esta es la manera más fácil! mejor.
Noor Hossain
2
  • haga clic en scrollView en el árbol de componentes (a la derecha)
  • haga clic en el nuevo botón que aparece a la izquierda (segunda fila de la barra de herramientas)
Eric JOYÉ
fuente
1
¿podrías agregar una captura de pantalla? No veo que aparezca ningún botón nuevo.
Brabbeldas
@Brabbeldas, el nuevo botón llamado "alternar el modo de representación de la ventana gráfica". Tal vez te ayude a stackoverflow.com/a/30443662/1323374
Ninja
1

Otra solución alternativa rápida es ocultar los diseños temporalmente en la parte superior para que los diseños en la parte inferior puedan aparecer en la ventana visible en Android Studio.

Ponga android:visibility="gone"los diseños que desee ocultar.

Ejemplo:

<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
fuente
Esta es una solución muy incómoda ... No hagas esto, al menos es extremadamente necesario.
Joaquin Iurchuk
1
Utilice tools:visibility="gone".
dnp
0

Puede que llegue tarde, pero te resultará mucho más fácil establecer los márgenes en negativo para desplazar la vista de desplazamiento hacia la izquierda.

Por ejemplo:

margen:

izquierda: -100px

¡Ahora puede ver y editar la vista de desplazamiento como desee!

Mak Khan
fuente
0

DISEÑO DE LA TABLA

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

Lo mejor que encontré es configurar el dispositivo como personalizado. Entonces podemos cambiar el diseño simplemente arrastrando.

Bibin Johny
fuente
0

Mi diseño es largo y necesito desplazar el diseño incluso con la resolución vertical larga y cuando configuro el editor de diseño en resoluciones altas, la pantalla no se desplaza completa y suavemente

Al configurar el diseño en 3.2_HVGA_slider_ADP1_API_27 , la pantalla se desplazó y mi problema se resolvió

ZIROS
fuente