如何为 ListView 行创建列式布局?
Posted
技术标签:
【中文标题】如何为 ListView 行创建列式布局?【英文标题】:How to create column-like layout for ListView rows? 【发布时间】:2011-04-04 21:56:46 【问题描述】:我有一个看起来像这样的相对布局:
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
>
<TextView
android:id="@+id/nameText"
android:layout_
android:layout_
android:padding="5dip"
android:layout_alignParentLeft="true"
android:text="Symbol"
/>
<TextView
android:id="@+id/priceText"
android:layout_
android:layout_
android:padding="5dip"
android:layout_toRightOf="@+id/nameText"
android:gravity="right"
android:text="100"
/>
<TextView
android:id="@+id/changeText"
android:layout_
android:layout_
android:padding="5dip"
android:layout_toRightOf="@+id/priceText"
android:gravity="right"
android:text="1.3"
/>
</RelativeLayout>
如何让公司名称排在数字 1.3 旁边?
【问题讨论】:
【参考方案1】:跟进 Mayra 的回答,这是使用 layout_weight 的一种方法:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
>
<TableRow>
<TextView
android:id="@+id/left_text"
android:layout_
android:layout_
android:gravity="left|center_vertical"
android:padding="5dip"
android:layout_weight="0"
android:text="Code"
/>
<TextView
android:id="@+id/middle_text"
android:layout_
android:layout_
android:gravity="right|center_vertical"
android:padding="5dip"
android:layout_weight="1"
android:text="Name of Company"
/>
<TextView
android:id="@+id/right_text"
android:layout_
android:layout_
android:padding="5dip"
android:gravity="right|center_vertical"
android:layout_weight="0"
android:text="1.3"
/>
</TableRow>
</TableLayout>
【讨论】:
一如既往,坚如磐石的答案!使用表格布局而不是相对布局会影响性能,因为它位于列表视图中? 嗯,在这方面我恐怕帮不上什么忙。我不确定这会如何影响性能。我不认为这会造成很大的不同。【参考方案2】:目前尚不清楚您希望发生什么,但这里有几个选项:
如果您希望列跨行对齐,您可以考虑使用TableLayout。
您还可以使用“权重”属性来影响每个 TextView 占据的屏幕百分比。如果你在最左边的文本视图上赋值为 1,在另一个 2 上赋值为 0,这将导致左边的文本视图占用所有额外的空间,从而将中间的文本视图推到右边。这可能会导致中间文本视图看起来右对齐。您可以通过分配 2、5 和 3 来代替左侧的 20%、中间的 50% 和右侧的 30%。
您也可以为文本视图设置一个明确的大小(以 dpi 为单位),但这对于不同大小的屏幕可能会出现问题。
【讨论】:
是的,我希望公司名称与价格右对齐 你能用代码显示吗,如何做表格布局?我插入了一个表格行,现在文本视图垂直而不是水平堆叠在一起。 见 hello tableLayout:developer.android.com/guide/tutorials/views/… 几乎所有布局或视图类型都有很好的教程。【参考方案3】:我同意梅拉的观点!使用 TableView,您将获得所需的格式,并保留 ListView 的几乎所有功能(scolling 和面向列表的功能)
【讨论】:
以上是关于如何为 ListView 行创建列式布局?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 ChatApp 制作 ListView 来管理所有聊天?