更改广告可见性后滚动视图自动滚动
Scrollview autoscrolls after changing visibility of Ad
我有一个 ScrollView
,其中包含 Textview
、Imageview
、Webview
和 RelativeLayout
底部的粘性 PublisherAdView
包含我的 ScrollView
和 PublisherAdView
.
我的广告的可见度默认为 GONE
,但在广告加载后,我将 PublisherAdView
的可见度更改为 VISIBLE
。
问题是,当我更改可见性时,我的 ScrollView
会自动滚动到某个位置,我不希望这样。
我该如何解决这个问题?
这是我的布局
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@color/windowBackground">
<LinearLayout
android:layout_above="@+id/ad_view_sticky"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@color/windowBackground"
android:orientation="vertical">
<LinearLayout
android:id="@+id/container_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
</LinearLayout>
<ScrollView
android:id="@+id/scroller"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:id="@+id/news_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/windowBackground"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/main_text_color"
android:textSize="24sp"
android:textStyle="bold"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="5dp" />
<TextView
android:id="@+id/spot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/main_text_color"
android:layout_marginBottom="5dp"
android:textSize="16sp"
android:textStyle="bold"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_marginRight="10dp" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/relativeLayout">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="visible"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginTop="40dp"
android:layout_marginBottom="40dp"/>
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/descr_image"
android:src="@drawable/resimsiz"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:background="#80000000">
<TextView
android:id="@+id/category"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/secondary_text_color"
android:textSize="14sp"
android:textStyle="bold"
android:layout_marginStart="3dp"
android:layout_marginLeft="3dp"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp" />
<TextView
android:id="@+id/date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:textColor="@color/secondary_text_color"
android:textSize="14sp"
android:textStyle="bold"
android:layout_marginEnd="3dp"
android:layout_marginRight="3dp"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp" />
</LinearLayout>
</RelativeLayout>
<com.google.android.gms.ads.doubleclick.PublisherAdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/ad_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/ad_news_detail_sticky"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"
android:visibility="gone"/>
<WebView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="WebViewLayout"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"/>
<TextView
android:id="@+id/tv_related_contents"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/tv_related_contents"
android:visibility="gone"
android:padding="10dp"
android:textSize="16sp" />
</LinearLayout>
</ScrollView>
</LinearLayout>
<com.google.android.gms.ads.doubleclick.PublisherAdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@id/ad_view_sticky"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/ad_news_detail_sticky"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"
android:layout_centerInParent="true"
android:visibility="gone"/>
</RelativeLayout>
我的代码部分是
mAdView.setAdListener(new AdListener(){
PublisherAdView mAdView = (PublisherAdView) findViewById(R.id.ad_view_sticky);
@Override
public void onAdLoaded() {
super.onAdLoaded();
mAdView.setVisibility(View.VISIBLE);
}
});
您无需执行 GONE -> VISIBLE 操作,AdMob SDK 会为您处理。
对于不需要的滚动,尽量将广告视图放在滚动视图之外。
实际上将 android:descendantFocusability="blocksDescendants"
添加到我的根 RelativeLayout
解决了问题
感谢帮助
将您的 adView 封装在 LinearLayout
固定高度 50dp
内。尝试以下操作:
<LinearLayout
android:layout_above="@+id/ad_view_sticky"
android:layout_width="match_parent"
android:layout_height="50dp">
<com.google.android.gms.ads.doubleclick.PublisherAdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@id/ad_view_sticky"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/ad_news_detail_sticky"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"
android:layout_centerInParent="true"
android:visibility="gone"/>
</LinearLayout>
而不仅仅是
<com.google.android.gms.ads.doubleclick.PublisherAdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@id/ad_view_sticky"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/ad_news_detail_sticky"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"
android:layout_centerInParent="true"
android:visibility="gone"/>
我有一个 ScrollView
,其中包含 Textview
、Imageview
、Webview
和 RelativeLayout
底部的粘性 PublisherAdView
包含我的 ScrollView
和 PublisherAdView
.
我的广告的可见度默认为 GONE
,但在广告加载后,我将 PublisherAdView
的可见度更改为 VISIBLE
。
问题是,当我更改可见性时,我的 ScrollView
会自动滚动到某个位置,我不希望这样。
我该如何解决这个问题?
这是我的布局
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@color/windowBackground">
<LinearLayout
android:layout_above="@+id/ad_view_sticky"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@color/windowBackground"
android:orientation="vertical">
<LinearLayout
android:id="@+id/container_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
</LinearLayout>
<ScrollView
android:id="@+id/scroller"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:id="@+id/news_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/windowBackground"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/main_text_color"
android:textSize="24sp"
android:textStyle="bold"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="5dp" />
<TextView
android:id="@+id/spot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/main_text_color"
android:layout_marginBottom="5dp"
android:textSize="16sp"
android:textStyle="bold"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:layout_marginRight="10dp" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/relativeLayout">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="visible"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginTop="40dp"
android:layout_marginBottom="40dp"/>
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/descr_image"
android:src="@drawable/resimsiz"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
android:background="#80000000">
<TextView
android:id="@+id/category"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/secondary_text_color"
android:textSize="14sp"
android:textStyle="bold"
android:layout_marginStart="3dp"
android:layout_marginLeft="3dp"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp" />
<TextView
android:id="@+id/date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end"
android:textColor="@color/secondary_text_color"
android:textSize="14sp"
android:textStyle="bold"
android:layout_marginEnd="3dp"
android:layout_marginRight="3dp"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp" />
</LinearLayout>
</RelativeLayout>
<com.google.android.gms.ads.doubleclick.PublisherAdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/ad_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/ad_news_detail_sticky"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"
android:visibility="gone"/>
<WebView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="WebViewLayout"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"/>
<TextView
android:id="@+id/tv_related_contents"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/tv_related_contents"
android:visibility="gone"
android:padding="10dp"
android:textSize="16sp" />
</LinearLayout>
</ScrollView>
</LinearLayout>
<com.google.android.gms.ads.doubleclick.PublisherAdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@id/ad_view_sticky"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/ad_news_detail_sticky"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"
android:layout_centerInParent="true"
android:visibility="gone"/>
</RelativeLayout>
我的代码部分是
mAdView.setAdListener(new AdListener(){
PublisherAdView mAdView = (PublisherAdView) findViewById(R.id.ad_view_sticky);
@Override
public void onAdLoaded() {
super.onAdLoaded();
mAdView.setVisibility(View.VISIBLE);
}
});
您无需执行 GONE -> VISIBLE 操作,AdMob SDK 会为您处理。
对于不需要的滚动,尽量将广告视图放在滚动视图之外。
实际上将 android:descendantFocusability="blocksDescendants"
添加到我的根 RelativeLayout
解决了问题
感谢帮助
将您的 adView 封装在 LinearLayout
固定高度 50dp
内。尝试以下操作:
<LinearLayout
android:layout_above="@+id/ad_view_sticky"
android:layout_width="match_parent"
android:layout_height="50dp">
<com.google.android.gms.ads.doubleclick.PublisherAdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@id/ad_view_sticky"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/ad_news_detail_sticky"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"
android:layout_centerInParent="true"
android:visibility="gone"/>
</LinearLayout>
而不仅仅是
<com.google.android.gms.ads.doubleclick.PublisherAdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@id/ad_view_sticky"
android:layout_alignParentBottom="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/ad_news_detail_sticky"
android:layout_marginTop="10dp"
android:layout_marginBottom="5dp"
android:layout_centerInParent="true"
android:visibility="gone"/>