Não é possível ver o layout de visualização completo no Android Studio


89

Estou criando um LinearLayout vertical que será exibido em um ScrollView vertical. Não consigo encontrar uma maneira no Android Studio de ver a parte do LinearLayout que está abaixo da parte inferior do ScrollView. Existe alguma maneira de ver o layout completo em vez de restringi-lo à janela de visualização fornecida pelo renderizador?

Respostas:


66

Como Drew disse, criar uma definição de dispositivo definida pelo usuário foi a única solução que funcionou para mim. Abaixo, mostro os passos a seguir:

Etapa 1) No painel de visualização, abra o menu suspenso Seleção de dispositivo virtual e selecione Adicionar definição de dispositivo.

insira a descrição da imagem aqui

Etapa 2) Na caixa de diálogo Seus dispositivos virtuais, clique no botão Criar dispositivo virtual .

insira a descrição da imagem aqui

Etapa 3) Na caixa de diálogo Selecionar Hardware, clique no botão Novo Perfil de Hardware .

insira a descrição da imagem aqui

Etapa 4) Na caixa de diálogo Configurar perfil de hardware, especifique (por exemplo) uma resolução de 720 x 4000 px e um tamanho de tela de 12 polegadas. Também definir o tamanho da tela resulta em uma densidade de xhdpi (graças ao Mete).

insira a descrição da imagem aqui

Etapa 5) Feche todas as caixas de diálogo e reinicie o Android Studio. Etapa 6) Abra o menu suspenso Seleção de dispositivo virtual . O novo perfil de hardware definido pelo usuário pode ser encontrado em telefones e tablets genéricos . insira a descrição da imagem aqui


1
Obrigado pela sua resposta com todas as imagens e descrições úteis
Roozbeh Zabihollahi

não consigo ver nenhum lugar para adicionar altura
Lasitha Lakmal

37

Acabei de descobrir como. Você precisa criar uma definição de dispositivo definida pelo usuário no Android AVD - eu criei uma que tinha 480 x 4000 pixels. Saia e reinicie o Android Studio e então você pode selecionar este dispositivo no renderizador de visualização e pode ver 4000 pixels de LinearLayout.


+1 por não ter desmontado minha visão e por declarar a necessidade de reiniciar.
Iain Smith

Esta é a única solução adequada que encontrei até agora. Existe um problema; O Android Studio, ao usar essa resolução, define automaticamente a densidade para xxxhdpi. Existe uma maneira de definir a densidade de volta para hdpi? Estou usando o Android Studio v1.2
Brabbeldas

2
@Brabbeldas quando você cria o perfil, pode dar a largura e altura em pixels, mas também pode dar o "tamanho da tela" em polegadas, e a combinação dessas configurações define a densidade. Por exemplo, configurei o meu para 480x4000 com um tamanho de tela de 16 polegadas e isso me deu hdpi
Mete

Eu adicionei uma nova resposta com capturas de tela que descrevem como criar a definição de dispositivo definida pelo usuário. @Drew, se você achar útil para outras pessoas, pode aceitar como a resposta correta.
Brabbeldas

Maravilhoso! Para mim, redimensionar uma vez não funcionou! E a resposta abaixo stackoverflow.com/a/31582758/1752988 Também foi útil!
Randika Vishman

30

Encontre uma solução mais fácil , em seu layoutadicione algo como abaixo e ajuste conforme necessário:

android:layout_marginTop="-1500dp"

16
Melhor resposta, mas seria melhor se você usar: tools: layout_marginTop = "- 1500dp". Desta forma, a rolagem negativa só se aplica ao editor de layout e não no tempo de execução.
Leandro Glossman

Útil quando o botão mencionado por @Eric não está disponível.
Chintan Shah

18

na nova versão do android studio (não sei de qual versão, mas estou usando a última 2.3.3 agora) você pode redimensionar o layout de visualização arrastando-o

insira a descrição da imagem aqui


7
+1 funcionou para mim, mas tive que mudar o dispositivo no gif acima de nexo 4 para "Personalizado" manualmente para o botão de arrastar aparecer.
Songo

17

O Android Studio oferecerá uma visualização completa alternável, se ScrollView for a raiz do layout. Eu coloquei o meu em cima do RelativeLayout padrão e tive que consertá-lo manualmente no XML antes que a GUI me desse a visão completa.


Como você encontra isso?
mszaro

1
@MattSzaro Não me lembro onde encontrei as informações, mas se você quer dizer onde encontrar o XML para alterá-lo para que a visualização de rolagem seja o item raiz, há duas guias na parte inferior quando você abre o .xml para uma visualização: "Design" e "Texto". Clique em "Texto". Se você quer saber onde encontrar o alternador depois de fazer a alteração, acho que você precisa fechar e reabrir o projeto uma vez (talvez) e, em "Design", é o botão mais à esquerda na segunda linha da barra de ferramentas, com um ícone que parece um pedaço de papel de três colunas ou algo assim: "Toggle Viewport Render Mode".
Davidgro

1
@davidgro, localizar a opção na barra de ferramentas é o que estava procurando. Obrigado! Isso realmente ajudou.
mszaro

1
Combinado com a técnica em " Reutilizando Layouts com<include/> ", podemos extrair um ScrollViewno meio de um layout para um arquivo XML separado e visualizá-lo por completo.
Pang

E se o scrollview não for o root view. Gostaria que eles expandissem toda a maldita coisa e apenas colocassem um contorno da tela do telefone por cima para mostrar a área visível.
JPM de

17

Espero que a captura de tela o ajude:

captura de tela


4
falta este botão quando clico em meu scrollView na árvore de componentes
user3491799

8
Acabei de descobrir que o scrollview deve ser a camada superior para mostrar o botão. Thx Eric!
user3491799

A opção de visualização completa resolve meu problema para visualizações de rolagem vertical, no entanto, eu tenho uma visualização de rolagem horizontal incorporada que ainda está apenas parcialmente visível (o resto se estende para a direita fora da visualização) Existe uma maneira de resolver isso sem usar a opção de dispositivo personalizado ?
Essah

1
Esta é a resposta perfeita. é melhor do que o próprio perfil de altura do dispositivo. e está disponível no Android Studio 0.1.7+
Ninja

12

Você pode usar o atributo scrollY para rolar o ScrollView na visualização. Usar o atributo scrollY com o namespace de ferramentas só rola a exibição no display e não no aplicativo real. E certifique-se de usar px como a unidade com o atributo scrollY.

tools:scrollY="150px"

5

Atualização: agora você pode rolar um ScrollView diretamente dentro do painel de visualização (testei no Android Studio versão 2.3.2)

Resposta curta: Clique com o botão direito em ScrollView e selecione Refactor> Extrair> Layout .

O Android-studio extrairá seu ScrollView em um novo arquivo de layout e colocará o tools:showIn="@layout/original_layout_file"atributo no layout raiz (seu ScrollView).

Nota: o Android-studio irá visualizar o layout completo se o layout raiz for ScrollView.


1
@Tequilaman Se você estiver usando o Android Studio versão 2.3.2, você pode rolar o conteúdo do ScrollView usando a roda do mouse no painel de visualização
Momepukku

4

No Android Studio versão 3.2.1, você pode selecionar o dispositivo "Personalizado" no painel de visualização e redimensionar a visualização para a altura necessária.

exemplo de visualização personalizada do android studio


1
Esta é a maneira mais fácil! melhor.
Noor Hossain

2
  • clique em scrollView na árvore conponente (à direita)
  • clique no novo botão que aparece à esquerda (segunda linha da barra de ferramentas)

1
você poderia adicionar uma captura de tela? Não consigo ver nenhum botão novo aparecer.
Brabbeldas

@Brabbeldas o novo botão chamado "alternar modo de renderização da janela de visualização". Pode ajudá-lo a stackoverflow.com/a/30443662/1323374
Ninja

1

Outra solução alternativa rápida é ocultar os layouts temporariamente na parte superior para que os layouts na parte inferior possam aparecer na janela visível no Android Studio.

Coloque android:visibility="gone"os layouts que você deseja ocultar.

Exemplo:

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

Esta é uma solução muito incômoda ... Não faça isso, pelo menos é extremamente necessário.
Joaquin Iurchuk

1
Use tools:visibility="gone".
dnp de

0

Posso estar atrasado, mas será muito mais fácil para você apenas definir as margens como negativas para deslocar a visualização da rolagem para a esquerda.

Por exemplo:

margem:

esquerda: -100px

Agora você pode ver e editar a visualização de rolagem como quiser!


0

LAYOUT DA TABELA

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

O melhor que encontrei é configurar o dispositivo para customizar. Em seguida, podemos alterar o layout simplesmente arrastando.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.