Tentei escrever um código que é usado para redimensionar os componentes da interface do usuário quando o teclado virtual é exibido. Quando uso o AdjustResize, ele redimensiona os componentes da interface do usuário e ao mesmo tempo o AdjustPan me fornece a mesma saída. Quero saber a diferença entre eles e quando usar cada componente? Qual deles (AdjustPan ou AdjustResize) é bom para redimensionar a interface do usuário?
Aqui está o meu xml:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical" >
<EditText
android:id="@+id/editText5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="45dp"
android:ems="10"
android:inputType="textPersonName" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
android:text="My Button" />
</LinearLayout>
</RelativeLayout>
</ScrollView>
e o arquivo manifesto:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.adjustscroll"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.adjustscroll.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustPan|adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
fonte
AdjustResize = redimensionar o conteúdo da página
AdjustPan = move o conteúdo da página sem redimensionar o conteúdo da página
fonte
Também fiquei um pouco confuso entre AdjustResize e AdjustPan quando eu era iniciante. As definições dadas acima estão corretas.
AdjustResize: o conteúdo da atividade principal é redimensionado para dar espaço para entrada suave, por exemplo, teclado
AdjustPan: em vez de redimensionar o conteúdo geral da janela, ele apenas exibe o conteúdo para que o usuário possa sempre ver o que está digitando
AdjustNothing: como o nome sugere nada redimensionado ou panorâmico. O teclado é aberto, independentemente de ocultar ou não o conteúdo.
Eu criei um exemplo para uma melhor compreensão
Abaixo está o meu arquivo xml:
Aqui está a visualização de design do exemplo AdjustResize xml abaixo: Exemplo AdjustPan abaixo: Exemplo AdjustNothing abaixo:
fonte
Como o documento diz, lembre-se da combinação correta de valores:
fonte
Você pode usar o
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
AndroidManifest.xml para sua atividade atual e usarandroid:fitsSystemWindows="true"
estilos ou rootLayout.fonte