1

我刚刚将 AdWhirl 集成到我的应用程序中。我将 AdWhirl 视图设置为显示在我的主要活动布局的底部。我的主布局上有几个 EditText 框,当应用程序首次启动时,单击文本框通常会显示软键盘。但是,当我转到另一个活动并返回我的主要活动时,然后单击 EditText,软键盘会弹出,顶部有 AdWhirl 视图,覆盖了我的 EditText 框。这几天我一直在为此苦苦挣扎。任何帮助,将不胜感激。

我在清单中为所有活动定义了 android:windowSoftInputMode="adjustPan" 。

这是我的 main.xml 布局:

<RelativeLayout android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">

<ImageView android:id="@+id/ImageView02"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:background="@drawable/other_bg_small" android:layout_weight="1"/>

<ImageView android:id="@+id/ImageView01"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:background="@drawable/banner" android:layout_alignParentTop="true" 
    android:paddingBottom="30dip"/>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:stretchColumns="1" android:gravity="center"        android:id="@+id/table01"
    android:layout_below="@id/ImageView01" >

     ... Table stuff
</TableLayout>

<LinearLayout android:layout_width="fill_parent"
    android:id="@+id/ad_layout" android:layout_height="wrap_content"
    android:gravity="bottom" android:layout_alignParentBottom="true"
    android:layout_alignBottom="@+id/RelativeLayout01" android:layout_weight="1">

    <com.adwhirl.AdWhirlLayout android:id="@+id/adwhirl_layout"
        android:layout_width="fill_parent" android:layout_height="wrap_content"/>

</LinearLayout>

 </RelativeLayout>
4

2 回答 2

2

尝试将 onFocusChangeListener 设置为您的 EditText 框。当他们获得焦点时,将 AdWhirl 视图可见性设置为 View.INVISIBLE,这样它就不会阻碍文本框,然后在失去焦点后将其设置回可见。

final AdWhirl ad = (AdWhirl)findViewById(R.id.adwhirlAd);
        EditText et = (EditText)findViewById(R.id.editTextBox);
        et.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {

                ad.setVisibility(hasFocus ? View.INVISIBLE : View.VISIBLE);

            }
        });
于 2011-04-19T05:06:33.370 回答
0

我尝试设置 android:windowSoftInputMode="adjustPan"。它隐藏了 adMob 横幅也隐藏了 EdiText。我也尝试了接受的答案,但是edittext可以在没有键盘打开的情况下获得焦点。所以我找到的解决方案是在键盘打开时隐藏 adMob 横幅。我学会了如何检测键盘是否在此处打开。这是我的解决方案:

final View activityRootView = findViewById(R.id.sample_main_layout);
            activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {
                    int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
                    if (heightDiff > Support.dpToPx(MainActivity.this, 200)) { // if more than 200 dp, it's probably a keyboard...
                        mAdView.setVisibility(View.GONE);
                    }
                    else{
                        mAdView.setVisibility(View.VISIBLE);
                    }
                 }
            });
于 2016-11-06T11:35:13.173 回答