TableLayout中的自定义ListView在Android中的问题

时间:2015-10-10 07:16:42

标签: android android-layout android-tablelayout

在我的Android应用中,我正在使用JSON从服务器检索数据。为了显示该数据,我使用的是具有3个静态图像和两个ListView的自定义TextViews。数据以ListView显示,但方式不同。 image1

我希望输出像this图片。  但是我的输出列表有所不同,有时这些数字会从列表中丢失。 image2 在104之后,数字105和106丢失,然后缺少110。我不知道为什么输出是这样的。以下是我的xml布局代码:

XML代码

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="0,1,2"
    android:shrinkColumns="1"
    android:layout_marginLeft="10dp">

    <TableRow
        android:layout_width="match_parent">
        <TextView
            android:id="@+id/SrNo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="5dp"
            android:text="SR NO."
            android:textColor="#000000"
            android:singleLine="true"
            android:layout_marginTop="10dp"/>

        <TextView
            android:id="@+id/Name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Expert Name Here."
            android:textColor="#000000"
            android:paddingBottom="5dp"
            android:gravity="center"
            android:layout_marginTop="10dp"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right">

            <ImageView
                android:id="@+id/edit"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@android:drawable/ic_menu_view"
                android:paddingBottom="5dp"
                android:layout_marginTop="5dp"/>

            <ImageView
                android:id="@+id/view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@android:drawable/ic_menu_edit"
                android:paddingBottom="5dp"
                android:layout_marginTop="5dp"/>

            <ImageView
                android:id="@+id/delete"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@android:drawable/ic_menu_delete"
                android:paddingBottom="5dp"
                android:layout_marginTop="5dp"/>

        </LinearLayout>

    </TableRow>
</TableLayout>

1 个答案:

答案 0 :(得分:1)

你在与@Sangeeta的讨论中几乎一直在那里。

由于TableRow继承自LinearLayoutweight的概念也适用于此,因此必须将layout_width属性设置为0dp为了使视图水平扩展。

以下内容需要更改:

  1. 删除android:stretchColumns="0,1,2"
  2. 在使用android:layout_width="0dp"属性的地方设置layout_weight
  3. (注意:我只留下了问题的相关属性)

    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:shrinkColumns="1">
    
    <TableRow
        android:layout_width="match_parent">
        <TextView
            android:id="@+id/SrNo"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.25"/>
    
        <TextView
            android:id="@+id/Name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.5"/>
    
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="0.25">
    
            <ImageView
                android:id="@+id/edit"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    
            <ImageView
                android:id="@+id/view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    
            <ImageView
                android:id="@+id/delete"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    
        </LinearLayout>
    
    </TableRow>
    </TableLayout>