RelativeLayout中的大背景图像会导致layout_below和centerInParent出现意外行为

时间:2012-09-01 12:03:35

标签: android xml relativelayout

我有一个奇怪的问题,我希望有人可以帮助我。

我正试图让3个按钮出现在另一个之下,从屏幕中心开始有10dp的上边距。因此,第一个按钮位于屏幕中央,第二个按钮位于该按钮下方(不按下屏幕中心按钮),第三个按钮位于第二个按钮下方。

每当我向RelativeLayout(填满整个屏幕)添加一个大(大于屏幕大小)背景图像时,它会导致第二个和第三个图像返回到屏幕顶部(它们在哪里)应该是我从第一个按钮中删除了centerInParent属性)。第一个按钮仍然位于屏幕中间。

我想知道是否有人之前有过这个问题,围绕它的最佳解决方案是什么?使用较小的图像可以工作但不理想,因为问题再次出现在较小的屏幕尺寸上,这需要我缩小所有图像,有时仍会出现在某些屏幕尺寸上。

这是我的XML文件:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg" >
<Button
    android:id="@+id/button1"
    android:layout_centerInParent="true"
    style="@style/Button" />
<Button
    android:id="@+id/button2"
    android:layout_marginTop="10dp"
    android:layout_centerHorizontal="true"
    android:layout_below="@id/button1"
    style="@style/Button" />
<Button
    android:id="@+id/button3"
    android:layout_marginTop="10dp"
    android:layout_centerHorizontal="true"
    android:layout_below="@id/button2"
    style="@style/Button" />
</RelativeLayout>

按钮样式简单:

<style name="Button">
    <item name="android:layout_width">200dp</item>
    <item name="android:layout_height">40dp</item>
    <item name="android:gravity">center</item>
    <item name="android:padding">0dp</item>
    <item name="android:textStyle">bold</item>
</style>

因为在谷歌搜索时我找不到任何回答这个问题的人,所以一定是我误解的东西。这似乎应该是一个普遍的问题。

我也试过在LinearLayout中包装按钮,但是它没有达到预期的效果,因为LinearLayout越大(通过添加按钮)它会越高,我想要按钮来从屏幕中间开始向下走。基本上它实现了相同的结果,因为没有RelativeLayout,只是将重力设置为LinearLayout中心,方向设置为垂直。

任何帮助都非常感激,此刻我有点迷失了!

干杯!

2 个答案:

答案 0 :(得分:0)

如果我理解的话,请告诉我。你想要的是在屏幕上放置一个背景图片并在屏幕中央放置三个按钮?如果这是问题,你可以试着放入你的布局:

<ImageView
android:id="@+id/your_id"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/your_image"
android:scaleType="fitXY"
/>

关于按钮,我将以下内容放在所有这些按钮而不是android:layout_centerInParent =“true”:

android:layout_centerVertical="true"

答案 1 :(得分:0)

我无法解决这个问题(在我看来它似乎是某种类型的错误)所以我只是在我想要如何在屏幕上显示按钮并将其简化为仅使用LinearLayout按钮沿着屏幕移动。