在ListView中设置行高

时间:2014-06-16 19:01:22

标签: android listview

我试图以某种缩放因子为基础以编程方式设置ListView中行的高度。我已经在互联网上浏览了几个小时,无法弄清楚为什么我的代码无法正常工作。

更新 实际上布局的问题不仅仅是高度问题。所有TextViews的XML文件中的layout_weight都没有做任何事情。以编程方式在TextView上设置textSize也不起作用,文本比我设置的要大。但是在TextViews上设置可见性非常好,并且可以设置文本。另外要提到的是,我唯一可以想到的是,将此代码与此代码可用的任何正常情况区分开来的是我将此ListView放在自定义ViewGroup中。

这是我的getView()适配器代码,我试图设置高度。

public View getView(int position, View convertView, ViewGroup parent) {
    View layout = convertView;

    if (layout == null) {
        LayoutInflater inflater = activity.getLayoutInflater();
        layout = inflater.inflate(R.layout.listview_row_parameter, parent, false);
    }

    int rowHeight = (int) (defaultRowHeight * scale);

    layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, rowHeight));
    layout.requestLayout();


    Parameter p = getItem(position);
    TextView tvName = (TextView) layout.findViewById(R.id.tvName);
    TextView tvValue = (TextView) layout.findViewById(R.id.tvValue);
    TextView tvMin = (TextView) layout.findViewById(R.id.tvMin);
    TextView tvMax = (TextView) layout.findViewById(R.id.tvMax);
    TextView tvAvg = (TextView) layout.findViewById(R.id.tvAvg);

    if (showName) {
        tvName.setVisibility(View.VISIBLE);
        tvName.setTextSize(defaultTextSize * scale);
        tvName.setText(p.getName());
    } else {
        tvName.setVisibility(View.GONE);
    }

    if (showValue) {
        tvValue.setVisibility(View.VISIBLE);
        tvValue.setTextSize(defaultTextSize * scale);
        tvValue.setText(formatValue(p.getCurrentValue().value, p));
    } else {
        tvValue.setVisibility(View.GONE);
    }

    if (showMin) {
        tvMin.setVisibility(View.VISIBLE);
        tvMin.setTextSize(defaultTextSize * scale);
        tvMin.setText(formatValue(p.getMinValue().value, p));
    } else {
        tvMin.setVisibility(View.GONE);
    }

    if (showMax) {
        tvMax.setVisibility(View.VISIBLE);
        tvMax.setTextSize(defaultTextSize * scale);
        tvMax.setText(formatValue(p.getMaxValue().value, p));
    } else {
        tvMax.setVisibility(View.GONE);
    }

    if (showAvg) {
        tvAvg.setVisibility(View.VISIBLE);
        tvAvg.setTextSize(defaultTextSize * scale);
        tvAvg.setText(formatValue(p.getAverage(), p));
    } else {
        tvAvg.setVisibility(View.GONE);
    }

    return layout;
}

这是我的XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tvName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:textColor="@android:color/white"
        android:singleLine="true" />

    <!-- More TextViews here -->

所有行都显示正常的预期内容,但高度不正确。

0 个答案:

没有答案