У меня есть этот макет:Android: Как сделать макет, который подходит для нескольких размеров экрана?
, как Вы можете видеть, что есть номера в каждой из окружностей. Я создал его с помощью 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>
Майк, спасибо, что знаю об этом решении, но все же он не идеален, прежде всего, это большая работа (я хочу поддержать версию 2.3), но я бы не возражал, если бы это действительно сработало, но я запускал его на nexus4 и Galaxy s4, а на галактике s4 поля были немного выключены. Похоже, что единственное решение здесь делает это программно. – Tomer