【问题标题】:Android Adding Dynamic ListView HeaderAndroid 添加动态 ListView 标头
【发布时间】:2014-08-29 05:56:50
【问题描述】:

我有一个列表视图,我正在尝试为其设置标题,使其看起来像一个表格标题。这是我的列表视图行的 XML 文件:

PS:我删除了一些代码以缩短问题

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/txtDisplayDate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1" />
<TextView
    android:id="@+id/txtDisplayCat"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1" />
</LinearLayout>

还有我的标题列表视图的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/txtDisplayDate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="Date" />
<TextView
    android:id="@+id/txtDisplayCat"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="Category" />

以及我填充列表视图的类:

private class ListAdapter extends BaseAdapter {
    LayoutInflater inflater;
    ViewHolder viewHolder;

    public ListAdapter(Context context) {
        // TODO Auto-generated constructor stub
        inflater = LayoutInflater.from(context);
        LinearLayout listHeaderView = (LinearLayout)inflater.inflate(
                R.layout.trans_header_layout, null);
        listview.addHeaderView(listHeaderView);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return _translist.size();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {     
        // TODO Auto-generated method stub
        if (convertView == null) {

            convertView = inflater.inflate(R.layout.trans_listview_row,
                    null);
            viewHolder = new ViewHolder();

            viewHolder.txt_ddate = (TextView) convertView
                    .findViewById(R.id.txtDisplayDate);
            viewHolder.txt_dcat = (TextView) convertView
                    .findViewById(R.id.txtDisplayCat);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        viewHolder.txt_ddate.setText(_translist.get(position).getDate()
                .trim());
        viewHolder.txt_dcat.setText(_translist.get(position)
                .getCategory().trim());
        return convertView;
    }
}

但是,通过使用这些代码,这是我得到的输出:

标题与其下方的列不匹配。我想知道是否有其他方法可以将标题添加到列表视图,使其看起来像表格标题。

提前致谢。

编辑

listview所在的我的transaction_rec.XML:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Date" />

        <TextView
            android:id="@+id/txtDisplayDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Category" />

        <TextView
            android:id="@+id/txtDisplayCat"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>  
</LinearLayout>

<ListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
</ListView>
</LinearLayout>

还有我的 transactionRec.java:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.transaction_rec);
    context = this;
    listview = (ListView) findViewById(R.id.listview);

    //Code to get data from database
}

private class ListAdapter extends BaseAdapter {
    LayoutInflater inflater;
    ViewHolder viewHolder;

    public ListAdapter(Context context) {
        // TODO Auto-generated constructor stub
        inflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return _translist.size();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {     
        // TODO Auto-generated method stub
        if (convertView == null) {

            convertView = inflater.inflate(R.layout.transaction_rec,
                    null);
            viewHolder = new ViewHolder();

            viewHolder.txt_ddate = (TextView) convertView
                    .findViewById(R.id.txtDisplayDate);

            viewHolder.txt_dcat = (TextView) convertView
                    .findViewById(R.id.txtDisplayCat);

        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        viewHolder.txt_ddate.setText(_translist.get(position).getDate()
                .trim());
        viewHolder.txt_dcat.setText(_translist.get(position)
                .getCategory().trim());

        return convertView;
        }
    }
}

我现在得到的输出:

【问题讨论】:

  • 恕我直言,您可以使用宽度工资。这里可能是一个解决方案stackoverflow.com/a/4517358/619673
  • 但是有没有办法根据下面行的列来设置宽度呢?
  • 所以你应该为标题布局验证 onMeasure 并为行布局使用相同的参数。但是工资更容易(它也将设置标题和项目行中项目的工资宽度。假设:工资为 1,因此标题(我们有 5).20,.20,.20,.20,.20 和对于行布局也是相同的值。)
  • 所以基本上我应该做的是将宽度设置为 0dp 而不是 wrap_content?
  • 是的。检查我给你的链接示例。然而 0dp 并不总是适用于所有手机。我用来设置1dp。以防万一..

标签: android xml android-layout view


【解决方案1】:

试试这个……

        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" 

所有文本视图。

【讨论】:

  • 您能否提供更多详细信息,说明您建议此答案的内容和原因?这肯定会帮助作者更好地掌握答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2021-05-16
  • 2023-02-13
  • 1970-01-01
  • 2014-02-08
相关资源
最近更新 更多