2014-01-10 71 views
0

我的應用程序使用通過XML和可繪製文件夾構建的按鈕和圖像按鈕。
在某些設備上,應用程序UI元素(按鈕和圖像按鈕)丟失其位置並相互重疊,某些設備屏幕底部的最後一個按鈕消失。
方向改變時也一樣。所有Android設備上UI元素(按鈕,圖像按鈕)的位置相同

我希望我所有的元素在所有設備上處於相同的位置。
我怎樣才能使用XML。
有沒有簡單的方法可以做到這一點?
這是我的XML。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/bg" 
    android:orientation="vertical" > 

    <ImageButton 
     android:id="@+id/main_btn_1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="55dp" 
     android:layout_marginTop="71dp" 
     android:background="#ffffff" 
     /> 

    <ImageButton 
     android:id="@+id/main_btn_2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/main_btn_1" 
     android:layout_marginRight="56dp" 
     android:background="#000000" 
     /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/main_btn_1" 
     android:layout_below="@+id/main_btn_1" 
     android:textColor="#00aeed" 
     android:textStyle="normal" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/textView1" 
     android:layout_alignBottom="@+id/textView1" 
     android:layout_alignLeft="@+id/main_btn_2" 
     android:textColor="#ea1d24" 
     android:textStyle="normal" /> 

    <ImageButton 
     android:id="@+id/main_btn_3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView1" 
     android:layout_below="@+id/textView1" 
     android:layout_marginTop="42dp" 
     android:background="#000000" 
     /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/main_btn_3" 
     android:layout_below="@+id/main_btn_3" 
     android:textColor="#f7941d" 
     android:textStyle="normal" /> 

    <ImageButton 
     android:id="@+id/main_btn_4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView2" 
     android:layout_alignTop="@+id/main_btn_3" 
     android:background="#000000" 
     /> 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/main_btn_4" 
     android:layout_below="@+id/main_btn_4" 
     android:textColor="#f7941d" 
     android:textStyle="normal" /> 

    <ImageButton 
     android:id="@+id/main_btn_5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView4" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="12dp" 
     android:background="#000000" 
     /> 

    <TextView 
     android:id="@+id/textView5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/main_btn_5" 
     android:layout_centerHorizontal="true" 
     android:gravity="center_horizontal" 
     android:textColor="#0065b3" 
     android:textStyle="normal" /> 

</RelativeLayout> 
+0

您是否使用分辨率感知圖形? –

+0

是的,我做了,每個圖像使用9個補丁 –

回答

0

因爲有這麼多不同的屏幕尺寸,分辨率等,可能你要避免將佈局元素當使用絕對位置最主要的許多設備。 Android SDK有一些強大的結構來避免絕對定位(即LinearLayout,RelativeLayout),因此請嘗試使用它們,而不是像「12dp」那樣定義位置,使用layout_width,layout_height(wrap_content或match_parent)和layout_weight的正確組合可以幫助您放置佈局元素而不指定絕對位置。

+0

事實上,他使用的是RelativeLayout,所有位置都相對於彼此(alignTop,toLeftOf,alignParentRight,...所有RELATIVE定位 - 不是絕對的)。 –

+0

但他在所有這些中都使用了'wrap_content',而不是使用'layout_weight'參數來幫助標準化大多數設備的佈局。 – nKn

+0

我也試過這種方法,但無法使其工作。就像我想要第一個圖像按鈕(main_btn_1)從左邊放置2或5個像素,我不能用dp來完成。如果有什麼方法,請建議 –