Android 应使用哪种布局来显示“a”;页脚“;取决于屏幕的其他内容

Android 应使用哪种布局来显示“a”;页脚“;取决于屏幕的其他内容,android,Android,首先,我为标题道歉。我想了很久,很难选择一个更具描述性的标题,但真的找不到 我有一个屏幕,有一个标题(可变长度-使用滑动动作条)、一个中间部分(滚动视图)和一个用于显示广告的底部部分(固定长度)。我能够使用RelativeLayout编写屏幕,但我真正想做的是: 如果scrollview的内容(中间部分)不够长,无法填满屏幕(包括标题),我想在屏幕底部显示广告 如果scrollview的content+标题比屏幕长,我想在scroll view的内容下面显示广告,这意味着除非用户滚动到片段的底

首先,我为标题道歉。我想了很久,很难选择一个更具描述性的标题,但真的找不到

我有一个屏幕,有一个标题(可变长度-使用滑动动作条)、一个中间部分(滚动视图)和一个用于显示广告的底部部分(固定长度)。我能够使用RelativeLayout编写屏幕,但我真正想做的是:

  • 如果scrollview的内容(中间部分)不够长,无法填满屏幕(包括标题),我想在屏幕底部显示广告
  • 如果scrollview的content+标题比屏幕长,我想在scroll view的内容下面显示广告,这意味着除非用户滚动到片段的底部,否则广告不可见
将滚动视图的内容想象为短文本或图像+长文本。对于第一种情况,滚动视图内容将很短,因此我最好在屏幕底部显示广告,因为我有足够的空间,但如果它是图像+文本,它将大于屏幕高度,因此,我希望在用户滚动到底部后显示广告

我想这样做的原因是,如果屏幕上有有用的内容(用户体验),广告不一定会占用空间

在安卓系统中,是否可以不用编写自己的自定义布局来实现这一点?如果是,你会推荐哪种观点


事先非常感谢,

我认为没有这样的布局。您可以通过编程方式完成此操作。
ScrollView
始终只有一个子视图,因此您可以通过以下方式获取内容高度:

int contentHeight = scrollView.getChildAt(0).getHeight();
你可以用这种方法得到窗户的高度

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int windowHeight = size.y;
页眉和页脚的高度是固定的,因此您可以通过数学计算来决定页脚的放置位置

int totalHeight = heaederHeight + contentHeight + footerHeight
if(totalHeight < windowHeight) {
    // add the footer to the scrollview
} else {
    // add the footer below the scrollview
}
int totalHeight=heaederHeight+contentHeight+footerhight
if(总高度<窗高度){
//将页脚添加到滚动视图
}否则{
//在滚动视图下添加页脚
}
这种方法的缺点是你必须手动完成所有的工作


我希望这对您有所帮助:)

谢谢Kiril的及时回复。让我检查一下解决方案,然后再与您联系。实际上,
fillViewport
属性就是为此而设计的。请参阅Romain Guy的博客文章:可能重复@corsair992谢谢。这就是我想要的。我不知道你是否可以把它作为答案,因为它是重复的,但如果你可以,请这样做,我可以接受你的答案,并给你你的赏金:)。再次感谢大家。否则我永远也找不到这个问题。我把它标记为版主关闭的副本,并退还奖金(只有版主可以关闭奖金问题),但还没有人找到它。我对收集赏金不感兴趣,但是如果你喜欢,你可以发布一个自我回答并接受它。