Параметры макета: какой импорт я использую?

У меня такая же ситуация, как у этого парня: Баннер Admob, когда setContentView() используется для Surfaceview

Мой «sGame» создает игру с горизонтальным видом, которую я хочу, с рекламой admob, размещенной сверху.

Я думаю, что ответ будет работать, но я не уверен, какие LayoutParams импортировать для «layout.setLayoutParams».

Когда я нажимаю Alt+Enter в LayoutParams, я получаю следующие опции:

import android.view.ViewGroup.LayoutParams;
import android.widget.AbsoluteLayout.LayoutParams;
import android.widget.LinearLayout.LayoutParams;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.FrameLayout.LayoutParams;
import android.widget.GalleryLayout.LayoutParams;
import android.support.v7.widget.LinearLayoutCompat.LayoutParams;
//... quite a few more options

person Arri Ferrari    schedule 27.09.2015    source источник


Ответы (2)


Разные менеджеры компоновки используют разные параметры компоновки. Это очень очевидно: RelativeLayout использует RelativeLayout.LayoutParams, LinearLayout использует LinearLayout.LayoutParams и т. д.

Это означает, что вам нужно использовать RelativeLayout.LayoutParams:

import android.widget.RelativeLayout.LayoutParams;

Потому что в упомянутой вами ссылке ответ говорит вам использовать RelativeLayout.

А теперь позвольте мне дать вам дополнительную информацию. Что делать, если вы используете неправильные параметры? Выбрасывается InvalidCastException. Когда вы столкнетесь с этим исключением, вы, вероятно, поймете, что не так. Вы используете неправильный тип Params. И Android пытается привести этот тип Params к правильному типу!

person Sweeper    schedule 27.09.2015

Это зависит от типа layout.

Судя по ссылке, это RelativeLayout, поэтому вам нужно импортировать android.widget.RelativeLayout.LayoutParams.

person Hong Duan    schedule 27.09.2015