我有ListView
。每个项目都应包含一个条形图,我用几个TextView
- 对象创建。
这是一个单一的酒吧。
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="25dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp" >
<TextView
android:id="@+id/viewMon"
android:layout_width="25dp"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:background="#53933f" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="@string/chart_mon"
android:textAlignment="center" />
</RelativeLayout>
在我的适配器的getView
- 方法中,我尝试计算此元素的高度,最后通过
TextView dayView = (TextView) convertView.findViewById(R.id.viewMon);
dayView.setHeight(height);
问题是这似乎没有效果。值应该是正确的,如果我将值设置为文本,我会看到它们在UI中出现。
对我来说,似乎系统忽略布局参数(getHeight
也返回0)并在另一个地方使用xml文件的值。我怎么能避免这个?
答案 0 :(得分:0)
最后我找到了答案here。
不是简单地通过setHeight
设置高度,而是使用它:
LayoutParams params = dayView.getLayoutParams();
if (params == null) {
params = new LayoutParams(LayoutParams.MATCH_PARENT, heights[x]);
} else {
params.height = heights[x];
}
dayView.setLayoutParams(params);
答案 1 :(得分:0)
试试此代码段 -
yourviewforgetheight.ViewTreeObserver vto = text_about_content.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
yourviewforgetheight.getViewTreeObserver().removeGlobalOnLayoutListener(this);
float height =yourviewforgetheight.getHeight();
TextView dayView = (TextView) convertView.findViewById(R.id.viewMon);
dayView.setHeight(height);
}
});
希望这段代码可以帮助你!!! 如果它不起作用,请告诉我,我会尽力帮助你。