Android RelativeLayout não rolar quando em modo paisagem
-
22-12-2019 - |
Pergunta
Eu tenho um RelativeLayout no meu app, mas quando o telefone está em modo paisagem é não rolar.Eu li que eu preciso colocá-lo dentro de um ScrollView, mas continuo recebendo erros, então eu não poderia estar fazendo isso direito.
Alguma dica?
Obrigado antecipadamente.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff8400"
android:orientation="vertical" >
<EditText
android:id="@+id/txt_nomeSpot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="42dp"
android:ems="10"
android:hint="@string/nome"
android:inputType="text"
android:gravity="center" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/txt_coordSpot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_nomeSpot"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:hint="@string/coordenadas"
android:inputType="text"
android:ems="10"
android:gravity="center" />
<EditText
android:id="@+id/txt_classSpot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_coordSpot"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:hint="@string/classif"
android:inputType="text"
android:ems="10"
android:gravity="center" />
<EditText
android:id="@+id/txt_tipoSpot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_classSpot"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:hint="@string/tipo"
android:inputType="text"
android:ems="10"
android:gravity="center"/>
<EditText
android:id="@+id/txt_subtipoSpot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_tipoSpot"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:hint="@string/subtipo"
android:inputType="text"
android:ems="10"
android:gravity="center" />
<EditText
android:id="@+id/txt_moradaSpot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_subtipoSpot"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:hint="@string/morada"
android:inputType="text"
android:ems="10"
android:gravity="center" />
<Button
android:id="@+id/btn_submitSpot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_moradaSpot"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="@string/submeter" />
Solução
Basta ter a ScrollView como o elemento de nível superior.Existente RelativeLayout, em seguida, vai para dentro.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ff8400"
android:orientation="vertical" >
...other existing code here
</RelativeLayout>
</ScrollView>
EDITAR:Eu mudei a altura do seu RelativeLayout para "wrap_content" desde kabuko está correto no que ele diz em sua resposta.
Outras dicas
Você precisa de um ScrollView
, mas isso não faz sentido para o View
interior de altura match_parent
.Que faria o interior View
o mesmo tamanho como o ScrollView
não deixando nada para se deslocar.Você precisa definir o interior View
(neste caso, o seu RelativeLayout
altura suficiente para mostrar todo o seu conteúdo.Geralmente, isso significa que wrap_content
.