将按钮放在不同显示器上看起来相同的图像上

时间:2016-05-02 10:14:12

标签: android margin

我有一张地图,并希望将一些Button作为指针放在上面。这是我的

<?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_marginpx中设置dp或以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在我使用不同的显示大小时会改变它们的位置。
有没有想法如何修复按钮使其位置独立于显示尺寸。

1 个答案:

答案 0 :(得分:1)

正常情况下,DP或DIP意味着在与密度无关的像素中,因此如果将某个位置归属于某个对象,显然它将被修复。
从你的代码我看到你应该用这种方式在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);


我希望这会对你有所帮助