2013-10-18 60 views
0

我正嘗試創建一個新聞應用程序,以瓷磚顯示新聞摘要(例如Flipboard - 請參閱http://uncrate.com/p/2010/07/flipboard.jpg)。均勻拉伸Android GridLayout來創建新聞應用程序

目前,我只是試圖得到一個非常簡單的工作示例,說明這可能是如何構造的。

從閱讀中可以看出,使用GridLayout是在Android中執行此操作的最佳方法,以避免使用深度嵌套的LinearLayouts。不過,我一直試圖做幾個小時,但沒有運氣。我已經嘗試將layout_width設置爲0dplayout_gravityfill_horizontal,用於我的LinearLayout子元素,但這不起作用。我正在考慮嘗試在代碼中執行此操作(例如按照本文中的建議 - https://stackoverflow.com/a/10348166/831821),但確實想知道它是否只能通過XML實現。

任何幫助,這是非常讚賞。

下面是我當前的main.xml佈局文件。

<GridLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 

     android:useDefaultMargins="true" 
     android:columnOrderPreserved="false" android:rowOrderPreserved="false" 
     android:layout_alignWithParentIfMissing="false" android:layout_centerInParent="true" android:columnCount="2" 
     android:rowCount="3"> 

    <LinearLayout 
      android:layout_width="0dp" 
      android:layout_gravity="fill_horizontal" 
      android:layout_height="wrap_content" android:layout_row="0" android:layout_columnSpan="2" 
      android:layout_rowSpan="1" android:layout_column="0"> 
     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 
       android:id="@+id/textView"/> 
    </LinearLayout> 
    <LinearLayout 
      android:layout_width="0dp" 
      android:layout_gravity="fill_horizontal" 
      android:layout_height="wrap_content" android:layout_column="0" android:layout_columnSpan="1" 
      android:layout_row="1" android:layout_rowSpan="2" 
      > 
     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 
       android:id="@+id/textView1"/> 
    </LinearLayout> 
    <LinearLayout 
      android:layout_width="0dp" 
      android:layout_gravity="fill_horizontal" 
      android:layout_height="wrap_content" android:layout_column="1" android:layout_columnSpan="1" 
      android:layout_row="1" android:layout_rowSpan="2" 
      android:baselineAligned="false" android:clickable="false" 
      > 
     <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 
       android:id="@+id/textView2"/> 
    </LinearLayout> 

</GridLayout> 
+0

嘗試usinf layout_weight =「1」爲您的所有線性佈局,而不是layout_gravity,你也可以僅僅指剛做這一切中的LinearLayout的答案 –

+0

@LandLPartners感謝,不過我已經嘗試過了,也沒有工作。任何其他線索? – rod82

+0

就像在你嘗試去掉GridLayout一樣,因爲layout_weight在GridLayouts上不起作用。你可以嘗試的情侶選項是使用表格佈局,或者使用LieanerLayouts實現它(取決於這可能會如何複雜)。 –

回答

0

一些選項玩弄後,我已成功地拿出了以下解決方案,這對我足以作爲一個基本的工作的例子。我已經爲GridLayoutLinearLayoutlayout_weightweightSum混合了相關的LinearLayout元素,以獲得基本的新聞預覽頁面。

我確實認爲在我喜歡的XML中仍然有太多的嵌套,但考慮到在任何時候頁面上都不會有那麼多元素,我很滿意它的樣子。但是,如果任何人有更好的解決方案,請讓我知道。

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" android:columnCount="2" android:rowCount="3" android:useDefaultMargins="true"> 

    <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_column="0" android:layout_columnSpan="2" android:layout_row="0" android:layout_rowSpan="1"> 
     <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 
        android:id="@+id/textView"/> 
    </LinearLayout> 
    <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:weightSum="2" android:layout_column="0" android:layout_columnSpan="2" android:layout_row="1" 
      android:layout_rowSpan="2"> 
     <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"> 
      <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 
         android:id="@+id/textView1"/> 
     </LinearLayout> 
     <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"> 
      <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 
         android:id="@+id/textView2"/> 
     </LinearLayout> 
    </LinearLayout> 

</GridLayout>