软键盘弹出时,adMob 横幅覆盖文本视图
我一直无法阻止 adMob 横幅沿着软键盘滚动并覆盖我的文本视图......
这是我试图在 Android 中实现的目标的链接:http://bit.ly/myfoodcalc
我知道我的布局有点复杂,嵌套视图太多(也许)等。
我尝试过更改表现没有成功。
为了让您更好地理解它,这里是子伪 XML(以及帖子后面的完整 XML)...
<ScrollView>
<Linear layout>
<ImageView>
<TableView>
<Several rows with a Edit Text widget>
</TableView>
</ImageView>
</LinearLayout>
</ScrollView>
<FrameLayout>
<ImageView>
</FrameLayout>
这是我完整的 XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/relativeLayout"
android:background="@drawable/backgroundwithtext">
<ScrollView android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center_horizontal">
<ImageView android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:src="@drawable/icon"
android:layout_height="wrap_content"></ImageView>
<TableLayout android:id="@+id/tableLayout1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/backgroundsmallobj">
<TableRow android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:text="TITLE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView1">
</TextView>
</TableRow>
<TableRow android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText android:text="EditText"
android:maxLines="1"
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:imeOptions="actionNext">
</EditText>
</TableRow>
<TableRow android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText android:text="EditText"
android:maxLines="1"
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:imeOptions="actionNext">
</EditText>
</TableRow>
<TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content">
<EditText android:text="EditText"
android:maxLines="1"
android:id="@+id/editText4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:imeOptions="actionNext">
</EditText>
</TableRow>
<TableRow android:id="@+id/tableRow5"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<EditText android:text="EditText"
android:maxLines="1"
android:id="@+id/editText5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:imeOptions="actionNext">
</EditText>
</TableRow>
<TableRow android:id="@+id/tableRow6" android:layout_width="wrap_content" android:layout_height="wrap_content">
<EditText android:text="EditText" android:maxLines="1" android:id="@+id/editText6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:imeOptions="actionDone"></EditText>
</TableRow>
<TableRow android:id="@+id/tableRow7" android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:id="@+id/button1" android:layout_height="wrap_content" android:text="Button" android:layout_width="wrap_content"></Button>
</TableRow>
</TableLayout>
</LinearLayout>
</ScrollView>
<FrameLayout android:id="@+id/frameLayout1"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent">
<com.google.ads.AdView android:id="@+id/adView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:adUnitId="############"
ads:adSize="BANNER"
ads:loadAdOnCreate="true" />
</FrameLayout>
</RelativeLayout>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以更改键盘出现在广告上方时的行为方式。进入 AndroidManifest.xml 并在带有 AdMob 横幅的活动标记中添加此属性。
这将防止广告跳到键盘上方并隐藏输入。相反,它们将出现在键盘后面(隐藏)。我不知道这是否违反AdMob政策,我只是提供一个解决方案。
You can change how the keyboard behaves when it appears over the Ad. Go into your AndroidManifest.xml and add this attribute in the activity tag with the AdMob banner.
This will prevent the ads from jumping above the keyboard and hiding the input. Instead, they will appear behind the keyboard (hidden). I don't know if this is against AdMob policy, I am just providing a solution.
将其添加到您的活动清单中
android:windowSoftInputMode="stateVisible|adjustPan"
add this in your Manifest in activity
android:windowSoftInputMode="stateVisible|adjustPan"
我尝试设置 android:windowSoftInputMode="adjustPan"。
它隐藏了 adMob 横幅但也隐藏了 EdiText。
所以我找到的解决方案是在键盘打开时隐藏 adMob 横幅。
我学会了如何检测键盘是否打开 此处。
这是我的解决方案:
I tried setting android:windowSoftInputMode="adjustPan".
it hides the adMob banner but also the EdiText.
So the solution I found is to hide the adMob banner when the keyboard opens.
I learned how to detect if the keyboard opens here.
and here is my solution:
这可能不是您的理想解决方案,但我发现它最适合我的用户。当键盘显示时,它覆盖了我的 WebView 中的按钮和文本,造成了糟糕的用户体验。为了解决这个问题,我将 AdView 高度设置为横幅广告的高度,在我的例子中为 50dp,并将 AdView 布局设置为低于 WebView。最后我将WebView高度设置为wrap_content。当键盘可见时,广告会因空间不足而被临时删除;当键盘隐藏时,广告会再次显示。希望这有帮助。
This may not be the ideal solution for you but it is what I found to be best for my users. When the keyboard was shown it was covering buttons and text in my WebView making for a bad user experience. To fix this I set my AdView height to the height of the banner ad, in my case 50dp and set the AdView layout to below to the WebView. Finally I set the WebView height to wrap_content. When the keyboard is visible the ad is temporary removed because it runs out of space, when the keyboard is hidden the ad is shown again. Hope this helps.
我的 Ionic 应用程序中也遇到了类似的问题。我希望广告在软键盘显示时完全隐藏,但在软键盘关闭时可见。我通过在 config.xml 的
标记中添加以下内容解决了这个问题:I had a similar issue in my Ionic app. I wanted the Ad to completely be hidden when the soft keyboard shows up, but be visible when the soft keyboard is dismissed. I solved it by adding the following in the
<platform name="android">
tag of config.xml: