У меня есть два вида, игровое представление и вид admob.
Я хочу, чтобы представление игры было позиционировано в 0, 0 и с заполнением родительского элемента (поэтому оно охватывает весь экран), и я хочу, чтобы представление admob находилось в 50, 50 (только примерные координаты) и с fill_content.
Как это сделать с помощью FrameLayout в Android? Не имеет значения, если его через layout-xml или программно.
Я потратил много времени на поиск примеров и саму настройку кода без везения.
Конкретный пример кода более ценен, чем ссылка на то, как представления обычно работают в Android.
Обновление 1:
Это мой текущий код.
Разметка:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/framelayout" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">
<se.meendo.mapgame.MainMenuView android:id="@+id/mainmenuview" android:layout_width="fill_parent" android:layout_height="fill_parent" />
<com.google.ads.AdView android:id="@+id/ad"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dip"
android:layout_marginRight="50dip"
/>
</FrameLayout>
Java:
public class BannerActivity extends Activity {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.banner);
MainMenuView mmv = (MainMenuView) findViewById(R.id.mainmenuview);
if (mmv == null) {
mmv = new MainMenuView(this);
}
AdView ad = (AdView) findViewById(R.id.ad);
if (ad != null) {
ad = new AdView(this, AdSize.BANNER, "a14da0cf5ab5ef7");
AdRequest request = new AdRequest();
request.setTesting(true);
ad.loadAd(request);
}
}
}
public class BannerActivity extends Activity {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
FrameLayout layout = new FrameLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
MainMenuView mmview = new MainMenuView(this);
LayoutParams pl = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
layout.addView(mmview, pl);
AdView adView = new AdView(this, AdSize.BANNER, "****");
LayoutParams pelle = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
pelle.setMargins(240, 430, 0, 240);
adView.setLayoutParams(pelle);
// adView.setAdListener(new MyAdListener(this));
AdRequest request = new AdRequest();
request.setTesting(true);
adView.loadAd(request);
LayoutParams pl2 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
pl2.setMargins(240, 430, 0, 240);
// layout.addView(adView, pl2);
layout.addView(adView);
setContentView(layout);
}
}
Здесь я trid с координатами 240, 430 - так как я знаю, что баннер 320x50, и я хотел попробовать и положить в центр.
Результаты
XML-макет: представление MainMenu показало, но не admob-view Чистая Java: показан MainMenu-view, и admob-view. Но представление admob показано на 0, 0.
Добавьте только атрибут layout_gravity в представление com.google.ads.AdView, как следует
android:layout_gravity="left"
Оберните оба вида в FrameLayout. Чтобы установить вид admob на 50, 50:
android:layout_marginLeft="50dip"
android:layout_marginTop="50dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Этого должно быть достаточно. Какой код вы пробовали? Можете ли вы опубликовать его в своем ответе?