#android #android-layout #android-studio
#Android #android-макет #android-studio
Вопрос:
Я обновляю старый проект с eclipse на Android Studio. В процессе я также обновил Admob. У меня есть просмотр видео, реклама и линейный макет над ним, который переключается при нажатии на просмотр видео. Раньше это нормально работало в предыдущей версии. Однако в новой версии приложения наблюдается странное поведение.
Я вижу объявление в 1 пиксель внизу, и оно появляется только после того, как я коснулся экрана, при втором касании отображается содержимое линейного макета. Раньше реклама сразу отображалась сверху…
Кто-нибудь, пожалуйста, может помочь мне понять, что я делаю не так? Спасибо
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context="com.me.app.Main">
<VideoView
android:id="@ id/video1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<LinearLayout
android:id="@ id/ControlLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="top|center_horizontal"
android:background="#000000"
android:padding="10dp"
android:visibility="invisible">
<CheckBox
android:id="@ id/item1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onEvent1"
android:text="item1" />
<CheckBox
android:id="@ id/item2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:onClick="onEvent2"
android:text="item2" />
</LinearLayout>
<com.google.android.gms.ads.AdView
android:id="@ id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:minHeight="50dp"
ads:adSize="BANNER"
/>
Соответствующий код в классе:
menuView = (LinearLayout) findViewById(R.id.ControlLayout);
videoView = (VideoView) findViewById(R.id.video1);
videoView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (menuView.getVisibility() == View.GONE) {
menuView.setVisibility(View.VISIBLE);
} else {
menuView.setVisibility(View.GONE);
}
return false;
}
});
Обновить:
Итак, получается, что я все еще не могу получить рекламу поверх видео, выровненного по нижнему центру. Пробовал всевозможные вещи. Я даже удалил всю остальную функциональность, оставив только VideoView и AdView. По-прежнему не отображается. Есть идеи? Еще раз спасибо.
Комментарии:
1. не получил вашу проблему
Ответ №1:
Давайте посмотрим на ваш XML-код. Сначала вы добавили родительский элемент для заполнения видеообзора в свой xml, на самом деле это означает, что вся ваша область будет покрыта этим представлением, и это зависит от вашего разрешения видео. Возможно, соотношение сторон видео будет высоким, и просмотр рекламы в толпе будет скрыт в вашем макете.
Решение: укажите содержимое для просмотра видео или определенный размер.
<VideoView
android:id="@ id/video1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Комментарии:
1. Спасибо за помощь, но работает не совсем так, как должно. Видео теперь маленькое и в верхнем левом углу, но реклама отображается нормально. Видео должно быть полноэкранным, а реклама — сверху…
2. Не уверен, что вы имеете в виду, обернуть все это SurfaceView?