我有这个布局:
因为你可以看到它在每个圆圈中都有数字。我使用RelativeLayout创建它,然后使用每个TextView的边距进行播放,它在我的Nexus 4上看起来很不错。
但很明显,当我使用不同分辨率的不同设备时,由于边距设置为特定的屏幕尺寸/密度,因此所有内容都显得格格不入。
环顾网页,我看到我无法使用百分比,那么我如何才能使这种布局适合所有屏幕尺寸?
我是这样做的:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/circleContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="zoomCircle" >
<ImageView
android:id="@+id/circleImg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_margin="5dp"
android:contentDescription="@string/packages_desc"
android:src="@drawable/circle" />
<TextView
android:id="@+id/numOfEnv"
style="@style/whiteCircleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/circleImg"
android:layout_marginRight="@dimen/rightMargin"
android:layout_marginTop="@dimen/topMargin"
android:text="100" />
<TextView
android:id="@+id/numSmall"
style="@style/whiteCircleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/circleImg"
android:layout_alignRight="@id/circleImg"
android:layout_marginBottom="@dimen/bottomMargin"
android:layout_marginRight="@dimen/rightMargin"
android:text="20" />
<TextView
android:id="@+id/numMedium"
style="@style/whiteCircleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/circleImg"
android:layout_alignLeft="@id/circleImg"
android:layout_marginBottom="@dimen/bottomMargin"
android:layout_marginLeft="@dimen/leftMargin"
android:text="30" />
<TextView
android:id="@+id/numBig"
style="@style/whiteCircleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/circleImg"
android:layout_marginLeft="@dimen/leftMargin"
android:layout_marginTop="@dimen/topMargin"
android:text="740" />
</RelativeLayout>
答案 0 :(得分:0)
您使用尺寸在正确的轨道上。为您要支持的每个屏幕尺寸创建一个不同的values
文件夹,即values-sw320dp
,values-sw600dp
等。每个文件夹都有自己的dimens.xml文件。然后,在每个维度文件中为leftMargin,topMargin等添加不同的值。有关详细信息,请参阅“使用新尺寸限定符”here部分。
答案 1 :(得分:0)
我认为你必须创建每个对象并以编程方式添加到布局中,并使用每个对象的比率。例如:您的屏幕比例是9/16。
height = size.y; width = ratio * height;
每个对象都将设置布局参数或边距参数,它们应该遵循此宽度和高度。