2012-09-01 91 views
0

我有一個奇怪的問題,我希望有人能夠幫助我。RelativeLayout中的大背景圖像會導致layout_below和centerInParent的意外行爲

我試圖讓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中的中心,並將方向設置爲垂直。

任何幫助非常感謝,我有點迷失在此刻!

乾杯!

回答

0

我沒能解決這個問題(它似乎對我來說,因爲它是某種錯誤),所以我只是在我想要的位置上做出妥協ay屏幕上的按鈕,並將其簡化爲僅使用LinearLayout並使按鈕沿屏幕向下。

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" 
/> 

和有關的按鈕,我把下面的所有的人,而不是機器人:layout_centerInParent =「真」:

android:layout_centerVertical="true" 
+0

感謝您的回覆!我嘗試了你所說的,並將背景放入ImageView中,但發生同樣的問題。圖像顯示的那一刻,第二個和第三個按鈕可以神奇地傳送到屏幕的頂部。我想要的是從屏幕中點向下列出按鈕。因此,第一個按鈕將位於屏幕中間,第二個按鈕位於第二個按鈕之下,等等。定義第二個按鈕時不會將第一個按鈕向上推。順便說一下,我確實對按鈕2和按鈕3有「android:layout_centerHorizo​​ntal =」true「,但我忘記了將它包含到代碼中。 – Mick

+0

試試這個:android:layout_below =」@ + id/button1「,和另一個按鈕。 – Javier

相關問題