如何为 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 行创建列式布局?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 listView 上的项目设置绝对位置?

具有自定义行布局的 ListView - Android

如何为 ChatApp 制作 ListView 来管理所有聊天?

如何为播放应用程序创建systemd单元文件

如何为随机自定义 ListView 适配器设置按钮单击事件?

如何为动态创建的控件实现自动布局?