Один макет игры

#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» для текста..