Как сделать ImageButton видимым / невидимым - PullRequest
2 голосов
/ 17 августа 2011

Я пытаюсь создать кнопку с изображением, чтобы закрыть рекламу от admob.Я создал кнопку в xml со свойством видимости, установленным на «невидимый», а затем на java я установил его на «видимый», когда объявление получено, но кнопка так и не стала видимой.Если я установил «видимый» в XML-коде, он будет отображаться на экране нормально.

Макет Admob:

<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>

Добавить объявление:

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);
    }
    });
}

СоздатьКнопка для закрытия объявления:

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();
    }

Ответы [ 2 ]

5 голосов
/ 17 августа 2011

button.setVisibility (View.VISIBLE); - абсолютно правильно. Вы проверили, действительно ли приложение попало в эту строку? Мне кажется, что это не так.

1 голос
/ 17 августа 2011

Вы должны добавить кнопку изображения после макета admob.
как это:

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