2016-05-02 2 views
0

У меня есть карта и хочу наложить на нее Button s. Вот мойкнопки пуговицы на изображении, которое выглядит одинаково на разных дисплеях

<?xml version="1.0" encoding="utf-8"?> 
<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"> 

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

Я поставил layout_margin в px или dp или progremmatically в процентах от display_size:

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

, но во всех этих методов Button s меняют свою позицию, когда я использую другой размер дисплея ,
Есть ли идея, как исправить кнопки, чтобы их положение не зависело от размера дисплея.

+0

установить его динамически на основе позиции точки маркера –

ответ

1

Обычно DP или DIP означает в android Плотно независимые пиксели, поэтому, если вы привязываете позицию к объекту, очевидно, он будет исправлен.
Из вашего кода я вижу, что вы должны получить равные ваши значения в DP таким образом.

RelativeLayout.LayoutParams param =(RelativeLayout.LayoutParams(getActivity().findViewById(id[i])).getLayoutParams(); 
param.setMargins(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,(int)(xFactor[i]*displySize.x), context.getResources().getDisplayMetrics()),TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,(int)(yFactor[i]*displySize.y), context.getResources().getDisplayMetrics()),0,0); 


Я надеюсь, что поможет вам

Смежные вопросы