2016-06-07 77 views
0

我正在開發我的第一個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中的兩列,通常其中一個文本不相關。

回答

1

我找到了解決方案。最後,我將GridLayout設置爲3行1列。並將其寬度和父寬度設置爲match_parent。每行和其子級的LinearLayout的寬度設置爲wrap_content。 ImageViews本身就是這些LinearLayout的子代,解決方案的關鍵部分是它們的layout_weight等於「0.3」。不需要重力或其他任何東西。 layout_weight =「0.3」,並且ImageViews被給出1/3的屏幕尺寸和GridLayout,並且它的父寬度被設置爲match_parent。

0

如果將gridlayout的寬度設置爲match_parent並確保其父視圖的寬度爲match_parent,則該視圖不應超出屏幕邊界。

+0

我將網格佈局的寬度更改爲「匹配父級」,並將每個父級佈局的寬度更改爲「匹配父級」,但沒有更改。它仍然溢出 – Imz

+0

將圖像的寬度設置爲0dp,然後設置android:layout_gravity爲每個圖像填充水平。 – Joopkins

+0

事實上,這也沒有工作,但它確實做了一些圖像的大小,讓我認爲這個問題在於ImageViews本身。感謝您把我放在正確的軌道Joopkins :)。 – Imz