【问题标题】:Setting height of views inside a ListView-Item在 ListView-Item 中设置视图的高度
【发布时间】:2014-06-12 03:42:06
【问题描述】:

我有一个ListView。每个项目都应该包含一个条形图,它是由几个TextView-Objects 创建的。 这是一个单独的酒吧。

<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>

在我的Adapter的getView-Method中,我尝试计算这个元素的高度,最后通过

TextView dayView = (TextView) convertView.findViewById(R.id.viewMon);
dayView.setHeight(height);

问题是这似乎没有效果。这些值应该是正确的,如果我将这些值设置为文本,我会看到它们出现在 UI 中。

对我来说,系统似乎忽略了布局参数(getHeight 也返回 0)并在另一个地方使用 xml 文件中的值。我怎样才能避免这种情况?

【问题讨论】:

标签: android listview layout


【解决方案1】:

终于找到了答案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);

【讨论】:

    【解决方案2】:

    试试这个代码 sn-p-

       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);
    
                        }
                    });
    

    希望这段代码对你有帮助!!! 如果它不起作用,请告诉我,我会尽力为您提供更多帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      相关资源
      最近更新 更多