Проблема в том, что при разных размерах экрана 2 ImageViews в коде ниже расположены в несколько разных положениях. Я понятия не имею, что это неправильно, теоретически все должно отображаться одинаково на всех экранах, becouse я использую layout_weights ...Несогласованные результаты при вложенности нескольких LinearLayouts
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menu_play_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg_color" >
<!-- relative layout contains 2 nested LinearLayouts here -->
<RelativeLayout
android:id="@+id/game_result_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- First LinearLayout -->
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:weightSum="600">
<View android:layout_weight="99" android:layout_width="match_parent" android:layout_height="0dp"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="75"
android:contentDescription="@string/star_desc"
android:src="@drawable/victory"/>
<View android:layout_weight="257" android:layout_width="match_parent" android:layout_height="0dp"/>
<!-- Second LinearLayout -->
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="1024">
<View android:layout_weight="538" android:layout_width="0dp" android:layout_height="match_parent"/>
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="45"
android:contentDescription="@string/star_desc"
android:src="@drawable/star"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
Однако, проблема возникает только после добавления второй вложенной LinearLayout. С помощью только первого LinearLayout, ImageView отображается в правой позиции на всех экранах. После вложенности второго LinearLayout, как показано выше, оба ImageViews слегка меняют свои позиции на разных экранах.
обновление: Решение, предоставленное Ben75, зафиксировало вертикальные несоответствия, но некоторые незначительные горизонтальные различия все еще остаются. Это обновленный второй (вложенный) LinearLayout код:
...
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="40"
android:weightSum="1024">
...
Вот красивый интерфейс на одном эмуляторе:
И здесь являются горизонтальными несогласованностями на эмулятор с меньшим экраном:
Примечание: В моем втором макете в коде выше я пытаюсь установить положение золотой звезды, чтобы покрыть серой звездой в backgrou изображение. В первом случае он работает, но во втором, как вы можете видеть, звезда полностью не подходит ...
Благодарим вас за ответ! Действительно, я сделал то, что вы предлагали, и это исправлено, но только вертикальные несоответствия. Горизонтальные различия все еще остаются. Вы видите больше проблем в моем коде? – Savail
Различия не огромны, но примечательны, особенно потому, что я пытаюсь прикрыть 1 изображение другим размером того же размера. Может быть, это ошибка андроида, потому что я действительно не могу понять, что может быть неправильно? – Savail
поставил скриншот то, что у вас сейчас есть, может помочь. – ben75