在listview中设置Relativelayout高度

时间:2014-09-16 04:16:33

标签: java android android-layout listview android-relativelayout

我想在relativeLayout

中设置ListView.高度

这是我在MenuListAdapter.java

中的代码
RelativeLayout background = (RelativeLayout) convertView.findViewById(R.id.background_color);
ImageView imgIcon = (ImageView) convertView.findViewById(R.id.icon);
TextView txtTitle = (TextView) convertView.findViewById(R.id.title);
txtTitle.setTypeface(typeface);
if(navDrawerItems.get(position).getType() == MenuType.HEADER)
{
     background.setBackgroundColor(context.getResources().getColor(R.color.header_color));
     background.setClickable(false);
     background.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
}else{
     background.setBackgroundColor(color.transparent);
}

我正在添加xml以获取我的代码的更多信息

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:background="@android:color/transparent"
    android:layout_height="wrap_content"
    android:id="@+id/background_color">

<ImageView
    android:id="@+id/icon"
    android:layout_width="@dimen/spacing_layout_image"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="@dimen/spacing_margin_text"
    android:layout_marginRight="@dimen/spacing_margin_text"
    android:src="@drawable/menu_btn"
    android:layout_centerVertical="true" />

<TextView
    android:id="@+id/title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/icon"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:textColor="@drawable/menu_text"
    android:paddingRight="@dimen/spacing_scrollview"
    android:layout_centerVertical="true"/>

<TextView 
    android:id="@+id/notifTotal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="@dimen/spacing_margin_text"
    android:background="@android:color/holo_red_dark"
    android:layout_centerVertical="true"
    android:layout_alignParentRight="true"
    android:textColor="@android:color/white"
    android:paddingLeft="@dimen/radius_default"
    android:paddingRight="@dimen/radius_default"
    android:visibility="gone"/>

但我收到错误消息"E/AndroidRuntime(11406): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams"

有人能告诉我我的代码有什么问题吗? 感谢的

它正在工作,使用AbsListView而不是RelativeLayout。 感谢Mr.Piyush Kukadiya

1 个答案:

答案 0 :(得分:0)

试试这个:

更改

background.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT));  

background.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT));  

更新:

RelativeLayout.LayoutParamsAbsListView.LayoutParams是两个不同类别的android.widget包。

在这里,您将使用更通用的AbsListView.LayoutParamsViewGroup.LayoutParams替换正确类型RelativeLayout.LayoutParams的现有布局参数。