我正在開發我的第一個Android應用程序。它是遊戲tictactoe的複製品。該應用程序的後端完美地工作。用戶界面也完美地工作。我的問題是用戶界面的顯示。該應用程序由3個3格組成的9個方格組成。當選中一個方塊時,它將被當前玩家方塊替換(可繪製)。我一直在使用Nexus 5仿真器進行測試。我對一切都感到滿意。作爲最終測試,我使用Nexus one仿真器運行應用程序,3x3網格不正確。最初我嘗試使用toRightOf,toLeftOf,below,above,alignBaseline,alignTop等XML佈局代碼在LinearLayout中顯示3x3網格,以使網格正確座標。在Nexus一個仿真器中打開這個時,正方形重疊(我假設正方形的尺寸太大),但在Nexus 5仿真器中看起來很好。我將佈局更改爲GridLayout,它修復了重疊,但現在網格溢出了屏幕。你可以在http://imadsayed.com/GridLayout_Overflowing.html或這裏看到我的應用的UI; GridLayout Overflow on Nexus One(左邊的仿真器是Nexus 5的UI正確,右邊的仿真器是Nexus One的仿真器,它顯示溢出,您可能需要向下滾動才能看到)。 通過在線發現的其他建議,我試着將GridLayout的每一行放入一個LinearLayout中,並將它們對齊到一個1x3的GridLayout中。這會導致網格不會溢出,但網格的最後一列與前兩列相比具有更小的正方形。所以我解開了這個,現在坐在一個溢出的網格。代碼如下所示:如何停止GridLayout溢出
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center">
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:rowCount="3"
android:columnCount="3"
>
<!-- tl -->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tl"
android:src="@drawable/square"
android:layout_row="0"
android:layout_column="0"
android:layout_rowWeight="1"
android:contentDescription="@null"
/>
</GridLayout>
</LinearLayout>
我只貼一平方米以上(ImageView的),還有他們的9在我的代碼,但除了行數和列數都是一樣的。註釋「tl」用於topLeft。這是左上方的廣場。整個GridLayout都在一個LinearLayout中,這樣我就可以像在Nexus 5仿真器中看到的那樣將屏幕居中在屏幕上。 那麼如何創建UI,以便如果它溢出,那麼它可以重新調整網格及其子節點(方塊),使它們都適合屏幕?類似的帖子只討論GridLayout中的兩列,通常其中一個文本不相關。
我將網格佈局的寬度更改爲「匹配父級」,並將每個父級佈局的寬度更改爲「匹配父級」,但沒有更改。它仍然溢出 – Imz
將圖像的寬度設置爲0dp,然後設置android:layout_gravity爲每個圖像填充水平。 – Joopkins
事實上,這也沒有工作,但它確實做了一些圖像的大小,讓我認爲這個問題在於ImageViews本身。感謝您把我放在正確的軌道Joopkins :)。 – Imz