How to make an ImageButton visible/invisibl

12,558

Solution 1

You should add the image button after the admob layout.
like this:

<RelativeLayout ...>
    <Admob..../>
    <ImageButton..../>
</RelativeLayout>

Solution 2

button.setVisibility(View.VISIBLE); - is absolutely correct. Have you checked if the app really got to this line? It seems to me that it did not.

Share:
12,558
Adriano Bacha
Author by

Adriano Bacha

Updated on June 04, 2022

Comments

  • Adriano Bacha
    Adriano Bacha almost 2 years

    I'm trying to create an imagebutton to close an ad from admob. I've created the button in the xml with the visibility property set to "invisible" and then on java I set it to "visible" when the ad is received, but the button never become visible. If I set it to "visible" hardcoded on the XML it appears on the screen normally.

    Admob layout:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/layout_main">
        <ImageButton        
            android:id="@+id/close_ad"
            android:visibility="invisible"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_gravity="right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="-36dip"
            android:layout_marginTop="12dip"
            android:background="@drawable/btn_close_ad" />  
    </RelativeLayout>
    

    Add ad:

    private void addAd() {
        rl = (RelativeLayout) activity.getLayoutInflater().inflate(R.layout.admob, null);
        rl.setGravity(position);
        activity.addContentView(rl, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        AdView admobView = new AdView(activity, AdSize.BANNER, Preferences.getAdmobKey());
        admobView.loadAd(new AdRequest());
        [ ... ]
        admobView.setAdListener(new AdListener() {
        @Override
        public void onReceiveAd(Ad ad) {
            Log.v("JeraAdmob", "onReceiveAd");
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    createCloseButton();
                }
            }, AD_SHOW_CLOSE);
        }
        });
    }
    

    Create button to close the ad:

    private void createCloseButton() {
            ImageButton button = (ImageButton) rl.findViewById(R.id.close_ad);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    rl.removeAllViews();
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            addAd();
                            rl.bringToFront();
                        }
                    }, AD_RELOAD);
                }
            });
            button.setVisibility(View.VISIBLE);
            button.bringToFront();
        }