Apakah mungkin untuk mengatur posisi absolut tampilan di Android? (Aku tahu ada AbsoluteLayout
, tapi sudah usang ...)
Misalnya, jika saya memiliki layar 240x320px, bagaimana saya bisa menambahkan ImageView
yang 20x20px sehingga pusatnya berada di posisi (100.100)?
view.setTranslationX()
atauview.offsetLeftAndRight()
Jawaban:
Anda dapat menggunakan RelativeLayout. Katakanlah Anda menginginkan ImageView 30x40 pada posisi (50,60) di dalam tata letak Anda. Di suatu tempat dalam aktivitas Anda:
Lebih banyak contoh:
Tempat dua 30x40 ImageViews (satu kuning, satu merah) masing-masing di (50,60) dan (80,90):
Tempatkan satu ImageView 30x40 kuning di (50,60) dan satu lagi ImageView merah 30x40 <80,90> relatif terhadap ImageView kuning:
sumber
ImageView
untuk dimasukkan, bukankah lebih baik menggunakanFrameLayout
?Secara umum, Anda dapat menambahkan tampilan di posisi tertentu menggunakan FrameLayout sebagai wadah dengan menentukan atribut leftMargin dan topMargin .
Contoh berikut akan menempatkan ImageView 20x20px pada posisi (100.200) menggunakan FrameLayout sebagai wadah layar penuh:
XML
Tampilan Aktivitas / Fragmen / Kustom
Ini akan melakukan trik karena margin dapat digunakan sebagai koordinat absolut (X, Y) tanpa RelativeLayout:
sumber
Hanya dengan menambahkan jawaban Andy Zhang di atas, jika Anda mau, Anda bisa memberikan param ke rl.addView, lalu buat perubahan di kemudian hari, jadi:
Bisa juga ditulis sebagai:
Jadi, jika Anda mempertahankan variabel params, Anda dapat mengubah tata letak iv kapan saja setelah menambahkannya ke rl.
sumber
Cara yang lebih bersih dan dinamis tanpa hardcoding nilai piksel apa pun dalam kode.
Saya ingin memposisikan dialog (yang saya mengembang dengan cepat) tepat di bawah tombol yang diklik.
dan menyelesaikannya dengan cara ini:
Namun Anda harus memastikan tata letak induk
myView
adalah turunan dariRelativeLayout
.kode lebih lengkap:
Dengan cara ini Anda masih dapat mengharapkan tampilan target untuk menyesuaikan ke setiap parameter tata letak yang diatur menggunakan tata letak file XML, alih-alih hardcoding piksel / dps dalam kode Java Anda.
sumber
Tempatkan pandangan apa pun pada titik X & Y keinginan Anda
file tata letak
Kelas Jawa
Selesai
sumber
Kalau-kalau itu dapat membantu seseorang, Anda juga dapat mencoba animator ini ViewPropertyAnimator seperti di bawah ini
kredit untuk jawaban bpr10
sumber
Coba kode di bawah ini untuk mengatur tampilan di lokasi tertentu: -
sumber
Kode saya untuk Xamarin , saya menggunakan FrameLayout untuk tujuan ini dan berikut ini adalah kode saya:
Itu berguna bagi saya karena saya membutuhkan properti pandangan untuk saling tumpang tindih berdasarkan penampilan mereka, misalnya pandangan ditumpuk satu sama lain .
sumber