我刚将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>
答案 0 :(得分: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);
}
});
答案 1 :(得分:0)
我尝试设置android:windowSoftInputMode =“adjustPan”。 它隐藏了adMob横幅,但也是EdiText。 我也尝试了接受的答案,但edittext可以在没有键盘打开的情况下获得焦点。 所以我找到的解决方案是在键盘打开时隐藏adMob横幅。 我学会了如何检测键盘是否打开here。 这是我的解决方案:
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);
}
}
});