编程语言
首页 > 编程语言> > java – Android:使用adjustPan和adjustResize都不起作用,但我需要两者

java – Android:使用adjustPan和adjustResize都不起作用,但我需要两者

作者:互联网

我还没有正式决定是否要走这条路线,但我的XML文档中有一个广告. XML文档包含一个包含ScrollView和Adview的Relative布局. Adview坚持相对布局的底部,而滚动视图在其他地方.

当用户专注于我的应用程序内部的edittext时,某些页面将被切断.我通过添加:

android:windowSoftInputMode="adjustPan"

但随后问题变成了每次用户打开键盘时我的AdView都会被切断.因此,为了解决这个问题,我将Android Manifest更改为:

android:windowSoftInputMode="adjustResize"

这使AdView保持在键盘顶部,但现在Adview涵盖了应用程序中的一些内容.我想知道是否有办法让我的应用内容不被覆盖,并在出现时将AdView保持在键盘上方?

我试过这个,但它不起作用:

android:windowSoftInputMode="adjustPan|adjustResize"

不确定我是否真的想要走那条路,我只想要选择.在我看来,这看起来很烦人.

解决方法:

您不能同时设置adjustPan和adjustResize.它们意味着完全不同且相互冲突的行为.它们仅影响键盘出现或消失时根视图的行为方式.

adjustPan表示“当键盘出现时,如果键盘后面的视图获得焦点,请向上移动视图以便用户可以看到它”,但它不允许用户自己移动视图.

adjustResize表示“当键盘出现时,更改视图的高度以适合键盘上方”.这并不意味着您的视图将正确适应以适应该空间 – 这是您的工作.

这听起来像你要做的是在广告上面有一个ScrollView,它停留在根RelativeLayout视图的底部.在你的情况下,你肯定想使用adjustResize来使RelativeLayout调整到更短的高度.这反过来会将广告移动到您所描述的键盘顶部.然后你必须确保主ScrollView总是在广告之上,而不是以某种方式隐藏在它后面.您可能想要一个看起来像这样的布局:

<RelativeLayout
    android:layoutWidth="match_parent"
    android:layoutHeight="match_parent">

        <ScrollView
            android:layoutWidth="match_parent"
            android:layoutHeight="match_parent"
            android:layoutAbove="@+id/advert_view">

            <!-- Your scrolling views go here -->

        </ScrollView>

        <AdvertView
            android:id="@id/advert_view"
            android:layoutWidth="match_parent"
            android:layoutHeight="wrap_content"
            android:alignParentBottom="true" />

</RelativeLayout>

请注意,ScrollView表示它希望成为父级的高度,但是布置在AdvertView上方.这意味着它不在底部边缘的AdvertView后面,您将能够滚动到ScrollView中存在的任何内容.

标签:java,android,admob,adview
来源: https://codeday.me/bug/20190628/1318856.html