#android #android-layout
#Android #android-макет
Вопрос:
Я хочу создать макет совпадающей игры в Android. У меня возникла проблема с тем, чтобы сделать мой макет совместимым со всеми разрешениями экрана. Что я хочу, так это значок изображения команды хозяев слева, расширяемое название команды хозяев, текст о счете команды хозяев, разделитель, текст о счете команды гостей, расширяемое название команды гостей, значок изображения команды гостей справа. Оценка должна быть посередине. Я просто не могу сделать это правильно. перед этой попыткой я попытался разделить основной макет на 3 макета: макет команды хозяев, макет счета и макет гостей — без успеха в получении ожидаемого результата.
Кто-нибудь, пожалуйста, может помочь?
Вот мой фрагмент кода:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@color/GamesBGColor" >
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:orientation="horizontal" >
<ImageView
android:id="@ id/homeTeamIcon"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/holonlogo" />
<ImageView
android:id="@ id/homeTeamText"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/holontext"
android:layout_width="115dip"
android:layout_marginLeft="3dip" />
<TextView
android:id="@ id/homeTeamScore"
android:layout_width="25dip"
android:layout_height="wrap_content"
android:text="123"
android:textColor = "@color/purple"
android:layout_gravity="center"
android:textStyle="bold"
android:layout_marginLeft="5dip" />
<TextView
android:id="@ id/seperator"
android:layout_width="10dip"
android:layout_height="wrap_content"
android:text="-"
android:layout_gravity="center"
android:layout_marginLeft="7dip" />
<TextView
android:id="@ id/awayTeamScore"
android:layout_width="25dip"
android:layout_height="wrap_content"
android:text="122"
android:textColor = "@color/red"
android:layout_gravity="center"
android:textStyle="bold"
android:layout_marginLeft="7dip" />
<ImageView
android:id="@ id/awayTeamText"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/jerusalemtext"
android:layout_width="115dip"
android:layout_marginLeft="3dip"/>
<ImageView
android:id="@ id/awayTeamIcon"
android:layout_width="50dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/jerusalemlogo" />
</LinearLayout>
</LinearLayout>
Ответ №1:
Если вы хотите, чтобы ваши макеты работали на экранах с разным разрешением, вам следует определять их размеры, используя dip
в качестве единицы измерения. Например:
android:layout_marginRight="10dip"
dip
означает «Пиксель, не зависящий от устройства», и использование их в вашем макете означает, что Android автоматически масштабирует ваш макет в зависимости от того, какой дисплей имеет устройство, на котором запущено ваше приложение.
Вы можете прочитать об этом на странице Поддержки нескольких экранов в документации разработчика Android. В этом документе также есть несколько других опций для обработки разных дисплеев, но я думаю, что использовать dip
, вероятно, проще всего.
Комментарии:
1. как вы можете видеть, я использовал dip. Моя проблема в том, что он не растягивается на полный горизонтальный ряд. У меня осталось немного свободного места справа на экранах размером более 4 дюймов. Например, если я увеличиваю угол наклона названия команды хозяев поля, значок команды гостей не помещается на 2.7 экрана и исчезает с экрана.
2. В этом случае вы можете использовать Droiddraw, чтобы увидеть физическую структуру. Это даст вам некоторое представление о том, каким может быть точное значение dip, которое вы должны использовать для решения вашей проблемы.
3. Я пытаюсь использовать конструктор, но все еще не могу понять, как я заполняю строку в соответствии с тем, что мне нужно. При более низком разрешении я получаю переполнение в правой части, а при более высоком я не установил достаточно «dip» для текста..