设置ListView项内的视图高度

时间:2014-04-26 10:52:17

标签: android listview layout

我有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文件的值。我怎么能避免这个?

2 个答案:

答案 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);

                    }
                });

希望这段代码可以帮助你!!! 如果它不起作用,请告诉我,我会尽力帮助你。