在我的应用中,我在AdView
(垂直)中有一个LinearLayout
对象和浮动按钮。我希望当用户购买应用内购买"删除广告" 以从xml中删除AdView
对象,以便取消FAB按钮。像这样:
没有广告:
我该怎么做? 那是我的xml代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:materialdesign="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:id="@+id/myMainRelativeLayout"
android:layout_height="match_parent"
tools:context=".MainActivity">
<include
android:id="@+id/tool_bar"
layout="@layout/tool_bar">
</include>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:clickable="true"
android:background="?android:selectableItemBackground"
android:id="@+id/recyclerView"
android:layout_below="@+id/tool_bar"
/>
<TextView android:id="@+id/list_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No Shopping Items yet"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:weightSum="100"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true">
<com.software.shell.fab.ActionButton
android:id="@+id/buttonFloat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="50"
android:layout_gravity="center"
fab:show_animation="@anim/fab_roll_from_down"
fab:hide_animation="@anim/fab_roll_to_down"/>
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="50"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id">
</com.google.android.gms.ads.AdView>
</LinearLayout>
这是我删除广告的代码:
mIsRemoveAdds = inventory.hasPurchase(SKU_REMOVE_ADDS);
if(!mIsRemoveAdds) {
Toast.makeText(MainActivity.this,"no premium",Toast.LENGTH_LONG).show();
mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}else{
if(mAdView != null) {
mAdView.setVisibility(View.GONE);
}
Toast.makeText(MainActivity.this,"premium",Toast.LENGTH_LONG).show();
}
答案 0 :(得分:2)
要删除您可以使用的任何视图,其中ll
是您的父线性布局
ll.removeView(view)// to remove particular view
ll.removeViewAt(position);// to remove view from particular position
或者,您也可以将广告设定的visibility
设置为GONE
,结果将其放置在按钮上。
adButton.setVisibility(View.GONE);
修改强>
在查看了您的XML后,我认为它的重要性正在产生问题
您应该将floatingButton
layout_weight
设置为100,隐藏adView
floatingButton.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 100f));
修改强>
我建议不要使用重量,因为你不需要它们。
答案 1 :(得分:1)
如果要动态确定是否要显示视图,则在xml中添加视图是不切实际的。如果您仍想添加添加到xml,则可以使其不可见或分离/删除视图。否则,不要在Xml中添加AdView。我按如下方式处理这个场景:
adView = new MoPubView(this.getApplicationContext());
adView.setAdUnitId(getString(R.string.mopub_banner_adunitid));
adView.refreshDrawableState();
adView.setBannerAdListener(this);
if(!Prefs.getUserPreferenceBooleanValue(Prefs.Key.REMOVE_ADS_PAID, this)) {
frameLayout.addView(adView, bannerViewLayoutParams);
adView.loadAd();
}
在代码中以编程方式添加广告视图。在共享偏好设置中存储标记,并根据需要进行设置以显示或删除广告。加载活动时,阅读标记并确定是否将广告视图添加到布局。
对于按钮的大小,您可以将其发送到相对于可用空间,或者根据flag的值调整大小。
答案 2 :(得分:1)
让我们说 youViewName 是您要删除的视图。 如果 LinearLayout 使用下面的代码,否则如果 RelativeLayout 在下面的代码中用 RelativeLayout <替换 LinearLayout / p>
((LinearLayout) youViewName.getParent()).removeView(youViewName);
在您的情况下,下面的行应该有效
((LinearLayout) mAdView.getParent()).removeView(mAdView);