将按钮放在在不同显示器中看起来相同的图像上
put buttons on an image which looks the same in different displays
我有一张地图,想在上面放一些 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>
我在 px
或 dp
中设置了 layout_margin
或以 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 会改变它们的位置。
是否有任何想法如何修复按钮以使其位置独立于显示大小。
通常 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);
希望对你有所帮助
我有一张地图,想在上面放一些 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>
我在 px
或 dp
中设置了 layout_margin
或以 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 会改变它们的位置。
是否有任何想法如何修复按钮以使其位置独立于显示大小。
通常 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);
希望对你有所帮助