0

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

目前,我只是试图获得一个非常简单的工作示例来说明如何构建它。

通过阅读,似乎使用 GridLayout 是在 Android 中执行此操作的最佳方法,以避免使用深度嵌套的 LinearLayouts。但是,我已经尝试这样做了几个小时,但没有运气。我已经尝试为我的子元素设置layout_widthto0dplayout_gravityto ,但这不起作用。我正在考虑尝试在接下来的代码中执行此操作(例如,按照这篇文章中的建议 - https://stackoverflow.com/a/10348166/831821),但我真的想知道它是否可以仅通过 XML 实现。fill_horizontalLinearLayout

对此的任何帮助都非常感谢。

下面是我当前的 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>
4

1 回答 1

0

在尝试了一些选项之后,我设法提出了以下解决方案,这足以作为一个基本的工作示例。我已经混合并GridLayout指定了相关元素,以获取基本的新闻外观页面。LinearLayoutlayout_weightweightSumLinearLayout

我确实认为 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>
于 2013-10-19T09:30:10.063 回答