put buttons on an image which looks the same in different displays
<p>I have a map and wanna put some <code>Button</code>s on it as pointers. Here is my </p>

<pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/karte"
    android:background="@drawable/my_map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"&gt;

    &lt;ImageButton
        android:id="@+id/btnSP1"
        android:layout_width="@dimen/pinpoint_size"
        android:layout_height="@dimen/pinpoint_size"
        android:scaleType="fitXY"
        android:background="@drawable/pinpoint"
        android:tag="001"
        android:layout_marginLeft="50px"
        android:layout_marginTop="90px"
        android:onClick="spClick"/&gt;
    &lt;ImageButton
        android:id="@+id/btnSP2"
        android:layout_width="@dimen/pinpoint_size"
        android:layout_height="@dimen/pinpoint_size"
        android:scaleType="fitXY"
        android:background="@drawable/pinpoint"
        android:tag="002"
        android:layout_marginLeft="100px"
        android:layout_marginTop="250px"
        android:onClick="spClick"/&gt;
  &lt;/RelativeLayout&gt;
</code></pre>

<p>I have set <code>layout_margin</code> in <code>px</code> or <code>dp</code> or progremmatically in percentage of the display_size: </p>

<pre><code>        RelativeLayout.LayoutParams param =(RelativeLayout.LayoutParams)(getActivity().findViewById(id[i])).getLayoutParams();
        param.setMargins((int)(xFactor[i]*displySize.x),(int)(yFactor[i]*displySize.y),0,0);
</code></pre>

<p>but in all of these methods <code>Button</code>s change their position when I use different display size. 
<br>
Is there any idea how to fix Buttons to make their position independent of the display size. </p>