我正在尝试创建一个在磁贴中显示新闻摘要的新闻应用程序(例如Flipboard - 请参阅http://uncrate.com/p/2010/07/flipboard.jpg)。
目前,我只想尝试一个非常简单的工作示例,说明如何构建它。
从阅读开始,似乎使用GridLayout是在Android中执行此操作的最佳方式,以避免使用深层嵌套的LinearLayouts。但是,我一直试图这样做几个小时,但没有运气。我已尝试为layout_width
子元素设置0dp
到layout_gravity
和fill_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 :(得分:0)
在玩了一些选项之后,我设法提出了以下解决方案,这对我来说已经足够作为一个基本的工作示例了。我已经找到了GridLayout
和LinearLayout
混合使用layout_weight
和weightSum
为相关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>