Saya ingin menambahkan jumlah ImageView
tampilan yang tidak diketahui ke tata letak saya dengan margin. Dalam XML, saya dapat menggunakan layout_margin
seperti ini:
<ImageView android:layout_margin="5dip" android:src="@drawable/image" />
Ada ImageView.setPadding()
, tapi tidak ImageView.setMargin()
. Saya pikir itu sejalan ImageView.setLayoutParams(LayoutParams)
, tetapi tidak yakin apa yang harus dimasukkan ke dalam itu.
Apakah ada yang tahu?
FrameLayout.LayoutParams
dan mungkin dengan yang lain: stackoverflow.com/questions/5401952/…android:layout_centerHorizontal = "true"
danandroid:layout_alignParentBottom = "true"
dengan cara apa saya bisa mencapai ini?sumber
android:layout_centerHorizontal = "true"
danandroid:layout_alignParentBottom = "true"
dengan cara apa saya bisa mencapai ini?Semua contoh di atas akan benar-benar MENGGANTI setiap parem yang sudah ada untuk Tampilan, yang mungkin tidak diinginkan. Kode di bawah ini hanya akan memperpanjang params yang ada, tanpa menggantinya:
sumber
Kode Kevin menciptakan
MarginLayoutParams
objek yang berlebihan . Versi lebih sederhana:sumber
Jika Anda ingin mengubah margin tampilan gambar tetapi biarkan semua margin lainnya tetap utuh.
Dapatkan MarginLayoutParameters dari tampilan gambar Anda dalam hal ini:
myImageView
Sekarang ubah saja margin yang ingin Anda ubah tetapi biarkan yang lain apa adanya:
sumber
Anda dapat menggunakan metode ini, jika Anda ingin menentukan margin dalam dp:
sumber
Saya hanya menggunakan ini dan berfungsi dengan baik:
unit setMargins () adalah pixel bukan dp. Jika Anda ingin mengatur margin dalam dp, di dalam file nilai / dimens.xml Anda, buat dimensi Anda seperti:
dan akses seperti:
sumber
Jika Anda menggunakan kotlin, ini dapat disederhanakan dengan membuat fungsi ekstensi
Sekarang yang Anda butuhkan hanyalah tampilan, dan fungsi ekstensi ini dapat digunakan di mana saja.
sumber
left
danright
margin, tetapi jika Anda memiliki margin relatif (start
danend
) itu tidak berfungsi. Saya menulis intisari dengan versi kode Anda yang 'ditingkatkan': gist.github.com/Grohden/f40c53bf86c5395638f7a44bf90e732d (setMarginsRelative
fungsi) - dapatkah Anda memasukkannya dalam jawaban Anda?sumber
Bagi saya ini berhasil:
sumber
sumber
Menggunakan metode yang mirip dengan ini mungkin menghemat beberapa sakit kepala dalam beberapa situasi. Jika Anda memiliki dua lintasan program yang mengutak-atik margin, lebih aman untuk memeriksa apakah sudah ada beberapa set layoutParams. Jika sudah ada margin, seseorang harus menambahnya dan tidak menggantinya:
sumber
Berikut adalah contoh untuk menambahkan 8px Margin di kiri, atas, kanan, bawah.
sumber
Jawaban dari tahun 2020:
dan kal hanya dalam kode Anda
sumber