我正在尝试布局一个相当基本的屏幕。它只是列表项单击后的详细信息视图屏幕。
最初我想要实现并排堆叠标签值类型的屏幕。 例如,冒号左侧的位置是静态文本,冒号右侧是基于单击行的动态值。
名字:john
姓氏:doe
最后登录日期:昨天
其他信息:blah
我开始使用相对布局,其中包含一堆文本视图,所有文本视图都相应地定位,以实现我正在寻找的东西。
当显示的动态数据增长并拉伸其封闭的文本视图时,会出现问题。当然,静态标签不会增长,而且一切都会被错误对齐......
我想知道是否有不同的方式来处理这种布局......
我正在回避在垂直线性布局中堆叠一堆水平线性布局。
是表格布局的方法吗?我读过“他们通常不是最好的工具,因为它们来自LinearLayout,而不是最有效的布局控制”。
答案 0 :(得分:2)
是的。使用带有xml中预定义布局的列表视图。使用simplelistadapter并将要用其填充的数据集传递给它。
修改强>
这是一个很棒的教程: http://www.vogella.com/articles/AndroidListView/article.html
答案 1 :(得分:2)
对于您想要创建的简单表单,我建议使用TableLayout。它使用简单。正如您所说,TableLayout的替代方案将是父垂直LinearLayout中的水平LinearLayouts。使用TableLayout还会自动为您调整右侧动态内容。右侧的所有内容都将被视为一列,因此如果调整大小,则会调整大小以匹配。
答案 2 :(得分:1)
在您的特定场景中,我相信TableLayout会运行良好(尽管我也听过类似的效率/性能问题)。只要此活动的整个Viewgroup不复杂,我认为性能不会太明显。
如果您正在尝试使RelativeLayout版本正常工作,也许您可以尝试这样:使用android:layout_alignParentLeft将所有静态标签对齐到左侧,并将每个标签对齐到它们对应的动态TextView的顶部使用android:layout_alignTop。这应该保持静态TextViews与左边对齐,同时与动态视图相对应。
现在这些视图已对齐,我们可以使用android:layout_toRightOf将动态视图水平对齐到最长的静态TextView。从那里,所有剩余的动态视图也可以android:layout_alignLeft到这个锚动态TextView,或者也以与锚相同的方式对齐到最长的静态TextView。这解决了所有动态TextView的水平对齐。
最后,我们可以设置每个动态TextView属于下一个,因为动态TextViews是我们在这个RelativeLayout中确定我们的垂直位置。每个视图都可以使用android:layout_alignBelow链接字段以垂直对齐。
我相信这对你有用,如果你想要一个代码示例,我可以在当天晚些时候编辑这篇文章。