Я пишу приложение для телефонов Android для игры Шахматы против Человека через Интернет. Я просматривал некоторые учебные пособия, чтобы научиться разрабатывать приложения для Android, и нашел очень хороший пример создания галерей (это был пример использования GridView для создания галереи о собаках), и пришла идея нарисовать шахматный стол с помощью GridView, потому что пример проекта также обрабатывал событие point & click, и я намеревался использовать то же событие тем же способом, но для другой цели. Игра работает хорошо (в настоящее время это версия для горячих сидений), однако я действительно разочарован тем фактом, что всякий раз, когда я поворачиваю экран телефона, мой GridView становится истеричным и оставляет свободное место в шахматной таблице между столбцами. Я понял, что причина этого в том, что ширина GridView такая же, как у его родителя, и GridView пытается заполнить его родителем, но должно быть (и, вероятно, есть) простое решение, чтобы избавиться от этой проблемы. Тем не менее, после целого дня исследований, я не нашел никакой подсказки, которая помогла бы мне сделать идеальный рисунок на моем шахматном столе без отрицательного побочного эффекта в функциональности.
Шахматный стол выглядит хорошо, если телефон находится в портретном режиме, но в альбомном режиме это далеко не приятно.
Вот как я могу решить, находимся ли мы в портретном или ландшафтном режиме:
((((MainActivity)mContext).getWindow().getWindowManager().getDefaultDisplay().getWidth()) < ((MainActivity)mContext).getWindow().getWindowManager().getDefaultDisplay().getHeight())
В файле main.xml GridView определяется следующим образом:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numColumns="8"
android:verticalSpacing="0dp"
android:horizontalSpacing="0dp"
android:stretchMode="columnWidth"
android:gravity="center"
>
</GridView>
...
</LinearLayout>
Я ценю любую помощь в решении проблемы и благодарю вас за чтение.
Портрет: http://www.freeimagehosting.net/image.php?f388b3ec64.png
Пейзаж: http://www.freeimagehosting.net/image.php?ee790603a2.png