我试图以某种缩放因子为基础以编程方式设置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 -->
所有行都显示正常的预期内容,但高度不正确。