Saya memiliki beberapa elemen dalam RelativeView dengan set atribut align bottom, ketika soft keyboard muncul, elemen tersebut disembunyikan oleh soft keyboard.
Saya ingin mereka naik sehingga jika ada cukup ruang layar, mereka ditampilkan di atas keyboard, atau membuat bagian di atas keyboard dapat digulir sehingga pengguna masih dapat melihat elemennya.
Ada ide tentang cara mendekati ini?
android
user-interface
android-layout
android-keypad
Makan malam
sumber
sumber
Jawaban:
Ya, lihat artikel ini di situs pengembang Android yang menjelaskan bagaimana kerangka kerja menangani kemunculan keyboard lunak.
The
android:windowSoftInputMode
atribut dapat digunakan untuk menentukan apa yang terjadi pada basis per-kegiatan: apakah tata letak adalah ukurannya atau apakah itu gulungan dllsumber
Anda juga dapat menggunakan kode ini dalam
onCreate()
metode:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
sumber
Tambahkan AndroidManifest.xml untuk aktivitas Anda:
android:windowSoftInputMode="adjustPan|adjustResize"
sumber
Lakukan perubahan dalam aktivitas file Manifest Anda seperti
android:windowSoftInputMode="adjustResize"
ATAU
Buat perubahan dalam
onCreate()
metode Anda di kelas aktivitas sepertigetWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
sumber
masalah serupa yang saya hadapi dengan tata letak saya yang terdiri dari tampilan gulir di dalamnya. Setiap kali saya mencoba memilih teks di EditText, bilah tindakan Salin / Potong / Tempel akan dipindahkan dengan kode di bawah ini sehingga tidak mengubah ukuran tata letak
android:windowSoftInputMode="adjustPan"
Dengan memodifikasinya menjadi seperti di bawah ini
1) AndroidManifest.xml
android:windowSoftInputMode="stateVisible|adjustResize"
2) file style.xml, dalam gaya aktivitas
<item name="android:windowActionBarOverlay">true</item>
Berhasil. !!!!!!!!!!!!
sumber
Di AndroidManifest.xml, jangan lupa untuk menyetel:
android:windowSoftInputMode="adjustResize"
dan untuk RelativeLayout di dalam ScrollView, setel:
android:layout_gravity="center" or android:layout_gravity="bottom"
ini akan baik-baik saja
sumber
Untuk Kegiatan dalam metode oncreate sisipkan baris di bawah ini
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
dan untuk fragmen dalam metode onCreate-nya
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
sumber
Ada 3 langkah yang harus diikuti untuk menggulir layar ke atas.
PS Jangan lupa untuk menambahkan android: layout_gravity = "center" di layout Relatif induk.
sumber
<activity name="ActivityName" android:windowSoftInputMode="adjustResize"> ... </activity>
Tambahkan NestedScrollView di sekitar tata letak yang ingin Anda gulir, ini akan bekerja dengan sempurna
sumber
Saya mencoba metode Diego Ramírez, berhasil. Di AndroidManifest:
<activity android:name=".MainActivity" android:windowSoftInputMode="stateHidden|adjustResize"> ... </activity>
Dalam activity_main.xml:
<LinearLayout ... android:orientation="vertical"> <Space android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" /> <EditText android:id="@+id/edName" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="@string/first_name" android:inputType="textPersonName" /> <EditText ...> ... </LinearLayout>
sumber
Saya telah menemukan solusi untuk masalah saya yang hampir sama dengan masalah Anda.
Pertama-tama, saya hanya memiliki LinearLayout dengan 2 elemen, ImageView dan LinearLayout yang berisi 2 EditText dan satu Tombol, jadi saya perlu memisahkannya dalam layar penuh tanpa keyboard, dan ketika keyboard muncul, mereka harus melihat lebih dekat.
Jadi saya menambahkan tampilan di antara mereka dengan atribut height di 0dp dan weight 1, yang memungkinkan saya memisahkan pandangan saya satu sama lain. dan ketika keyboard muncul, karena tidak memiliki ketinggian yang tetap, mereka hanya mengubah ukuran dan mempertahankan aspeknya.
Voila! Perubahan ukuran tata letak dan jarak antara pandangan saya sama saat keyboard ada atau tidak.
sumber
ConstraintLayout
dan menyematkan bagian atas ke atas dan bagian bawah ke bawah. Ketika keyboard terbuka, ukurannya secara alami akan berubah dengan menekan ruang di tengah (jika Anda menggunakanadjustResize
)Di File Java atau File Kotlin (Secara Terprogram): - Jika pengguna menginginkan ini menggunakan Activity, tambahkan baris di bawah ini dalam Metode onCreate
activity?.window()?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
sumber
Berikut adalah kode manifes lengkap
<activity android:name=".activities.MainActivity" android:windowSoftInputMode="adjustResize" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
sumber
jika Anda berada dalam fragmen maka Anda harus menambahkan kode di bawah ini ke onCreate Anda pada aktivitas Anda itu menyelesaikan masalah bagi saya
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
sumber
Dalam file manifes Anda tambahkan baris di bawah ini. Ini akan berhasil
<activity name="MainActivity" android:windowSoftInputMode="stateVisible|adjustResize"> ... </activity>
sumber
Saya baru saja menambahkan baris berikut ke tata letak tingkat atas dan semuanya berfungsi:
android:fitsSystemWindows="true"
sumber
Baiklah ini sudah sangat terlambat namun saya telah menemukan bahwa jika Anda menambahkan Tampilan Daftar di bawah teks edit Anda maka keyboard akan memindahkan semua tata letak di bawah teks editan itu tanpa memindahkan ListView
<EditText android:id="@+id/et" android:layout_height="match_parent" android:layout_width="match_parent" /> <ListView android:layout_width="match_parent" android:layout_height="match_parent"//can make as 1dp android:layout_below="@+id/et" // set to below editext android:id="@+id/view" > **<any layout**
Ini adalah satu-satunya solusi yang berhasil untuk saya.
sumber
Tidak ada satu saran pun yang menyelesaikan masalah saya. Sesuaikan Pan hampir sama seperti pekerjaan Sesuaikan Ubah Ukuran . Jika saya mengatur Adjust Nothing than layout tidak bergerak ke atas tetapi menyembunyikan teks editan saya dari bawah yang saya tulis dengan benar. Jadi setelah 24 jam pencarian terus menerus, saya menemukan sumber ini dan itu menyelesaikan masalah saya.
sumber
Mungkin terlambat tapi saya ingin menambahkan beberapa hal. Di Android Studio Versi 4.0.1, dan Gradle Versi 6.1.1,
windowSoftInputMode
ini tidak akan berfungsi seperti yang diharapkan jika Anda menambahkan tanda berikut dalam Aktivitas Anda:getWindow().setFlags( WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS );
Setelah membuang banyak waktu, saya menemukan peretasan itu. Agar
adjustResize
atauAdjustPan
atau atribut apa pun dariwindowSoftInputMode
berfungsi dengan baik, Anda harus menghapusnya dari aktivitas Anda.sumber