Pertanyaan Dapatkan margin View


Bagaimana saya bisa mendapatkan nilai margin dari View dari suatu Kegiatan? Tampilan dapat berupa jenis apa pun.

Setelah sedikit mencari, saya menemukan cara untuk mendapatkan gambaran dari sebuah pemandangan, tetapi tidak dapat menemukan apa pun di Margin. Adakah yang bisa membantu?

Saya mencoba sesuatu seperti ini,

ViewGroup.LayoutParams vlp = view.getLayoutParams();
int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin;

Ini berfungsi, tetapi dalam kode di atas saya mengasumsikan tampilan menjadi a LinearLayout. Tapi saya harus mendapatkan margin atribut bahkan ketika saya tidak tahu tipe tampilan.


76
2017-09-19 07:55


asal


Jawaban:


coba ini:

View view = findViewById(...) //or however you need it
LayoutParams lp = (LayoutParams) view.getLayoutParams();

margin dapat diakses melalui

lp.leftMargin;
lp.rightMargin;
lp.topMargin;
lp.bottomMargin;

edit: mungkin ViewGroup.MarginLayoutParams akan bekerja untukmu. Ini kelas dasar untuk yang lain LayoutParams.

ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html


148
2017-09-19 08:09



Mencoba

ViewGroup.MarginLayoutParams vlp = (MarginLayoutParams) view.getLayoutParams()

vlp.rightMargin
vlp.bottomMargin
vlp.leftMargin
vlp.topMargin

Ini mengembalikan margin yang benar untuk pandangan saya minimal.

http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html


25
2017-10-28 09:42



sekarang gunakan kode yang diedit ini. ini akan membantu Anda

FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams();

lp.leftMargin  // for left margin
lp.rightMargin   // for right margin

4
2017-09-19 08:26



Seperti yang disarankan orang lain, layout_margin # adalah ruang antara # tepi orang tua dan tampilan Anda.

  • # menggantikan "Kiri", "Kanan", "Atas", atau "Bawah"

Mendapatkan / mengatur margin bekerja untuk saya dengan:

ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams();
params.topMargin += 20;
mView.requestLayout();

Tentu saja, Pandangan saya memang ViewGroup dan orang tuanya adalah ViewGroup juga. Dalam sebagian besar kasus, Anda harus mentransmisikan params tata letak Anda ke LayoutParams kelas induknya (dalam hal ini adalah ViewGroup dan RelativeLayout)


2
2018-05-05 12:11