如何使图像按钮可见/不可见

时间:2011-08-17 15:12:47

标签: android eclipse android-layout admob imagebutton

我正在尝试创建一个图像按钮来关闭来自admob的广告。 我已经在xml中创建了一个按钮,其visibility属性设置为“invisible”,然后在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 个答案:

答案 0 :(得分:5)

button.setVisibility(View.VISIBLE); - 绝对正确。你有没有检查过该应用程序是否真的到了这一行?在我看来,它没有。

答案 1 :(得分:1)

您应该在admob布局后添加图像按钮。
像这样:

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