Saya mencoba menulis kode yang digunakan untuk mengubah ukuran komponen UI ketika soft-keyboard muncul. Ketika saya menggunakan adjustResize, itu mengubah ukuran komponen UI dan pada saat yang sama menyesuaikanPan memberi saya keluaran yang sama. Saya ingin tahu perbedaannya dan kapan harus menggunakan setiap komponen? Manakah (AdjustPan atau AdjustResize) yang bagus untuk mengubah ukuran UI?
Ini xml saya:
<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>
dan file menifest:
<?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>
sumber
AdjustResize = ubah ukuran konten halaman
AdjustPan = memindahkan konten halaman tanpa mengubah ukuran konten halaman
sumber
Saya juga agak bingung antara AdjustResize dan AdjustPan saat masih pemula. Definisi yang diberikan di atas benar.
AdjustResize: Konten aktivitas utama diubah ukurannya untuk memberikan ruang bagi soft input yaitu keyboard
AdjustPan: Alih-alih mengubah ukuran keseluruhan konten jendela, itu hanya menggeser konten sehingga pengguna selalu dapat melihat apa yang dia ketik
AdjustNothing: Seperti namanya diubah ukurannya atau digeser. Keyboard dibuka terlepas dari apakah itu menyembunyikan isinya atau tidak.
Saya telah membuat contoh untuk pemahaman yang lebih baik
Di bawah ini adalah file xml saya:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" tools:context=".MainActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:hint="Type Here" app:layout_constraintTop_toBottomOf="@id/button1"/> <Button android:id="@+id/button1" android:layout_width="0dp" android:layout_height="wrap_content" android:text="Button1" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@id/button2" app:layout_constraintStart_toStartOf="parent" android:layout_marginBottom="@dimen/margin70dp"/> <Button android:id="@+id/button2" android:layout_width="0dp" android:layout_height="wrap_content" android:text="Button2" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@id/button1" app:layout_constraintEnd_toStartOf="@id/button3" android:layout_marginBottom="@dimen/margin70dp"/> <Button android:id="@+id/button3" android:layout_width="0dp" android:layout_height="wrap_content" android:text="Button3" app:layout_constraintRight_toRightOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/button2" android:layout_marginBottom="@dimen/margin70dp"/> </android.support.constraint.ConstraintLayout>
Berikut adalah tampilan desain dari Contoh AdjustResize xml di bawah ini: Contoh AdjustPan di bawah ini: Contoh AdjustNothing di bawah ini:
sumber
Seperti yang dikatakan dokter , ingat juga kombinasi nilai yang benar:
<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
sumber
Anda bisa menggunakan
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"
di AndroidManifest.xml untuk aktivitas Anda saat ini, dan menggunakannyaandroid:fitsSystemWindows="true"
di styles atau rootLayout.sumber