Получить поле зрения

Как я могу получить значение маржи в представлении от Activity? Вид может быть любого типа.

После небольшого поиска я узнал, как получить дополнение к представлению, но ничего не нашел на Маржине. Может ли кто-нибудь помочь?

Я попробовал что-то вроде этого,

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

Это работает, но в приведенном выше коде я предположил, что представление представляет собой LinearLayout . Но мне нужно получить атрибут margin даже если я не знаю тип представления.

попробуй это:

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

Поля доступны через

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

Edit: возможно, ViewGroup.MarginLayoutParams будет работать для вас. Это базовый класс для других LayoutParams .

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

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

Пытаться

 ViewGroup.MarginLayoutParams vlp = (MarginLayoutParams) view.getLayoutParams() vlp.rightMargin vlp.bottomMargin vlp.leftMargin vlp.topMargin 

Это вернуло правильные маржи для моего взгляда по крайней мере.

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

Теперь используйте этот отредактированный код. Это поможет вам

 FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams)mainLayout.getLayoutParams(); lp.leftMargin // for left margin lp.rightMargin // for right margin 

Как и другие, layout_margin # – это пространство между # краем родителя и вашим представлением.

  • # Заменяет «Left», «Right», «Top» или «Bottom»

Получение / настройка полей работало для меня с:

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

Конечно, мой просмотр действительно был ViewGroup, а родитель также был ViewGroup. В большинстве случаев вы должны указать параметры макета в родительский класс класса LayoutParams (в этом случае это ViewGroup и RelativeLayout)