均匀地拉伸Android GridLayout以创建新闻应用程序

时间:2013-10-18 08:36:19

标签: android xml grid-layout

我正在尝试创建一个在磁贴中显示新闻摘要的新闻应用程序(例如Flipboard - 请参阅http://uncrate.com/p/2010/07/flipboard.jpg)。

目前,我只想尝试一个非常简单的工作示例,说明如何构建它。

从阅读开始,似乎使用GridLayout是在Android中执行此操作的最佳方式,以避免使用深层嵌套的LinearLayouts。但是,我一直试图这样做几个小时,但没有运气。我已尝试为layout_width子元素设置0dplayout_gravityfill_horizontalLinearLayout,但这不起作用。我正在考虑尝试在接下来的代码中执行此操作(例如,根据此帖中的建议 - 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>

1 个答案:

答案 0 :(得分:0)

在玩了一些选项之后,我设法提出了以下解决方案,这对我来说已经足够作为一个基本的工作示例了。我已经找到了GridLayoutLinearLayout混合使用layout_weightweightSum为相关LinearLayout元素指定的内容,以获得基本的新闻搜索页面。< / p>

我确实认为在我看来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>