简体   繁体   中英

Set Relativelayout height inside listview

I want to set a relativeLayout height inside a ListView.

This is my code in 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);
}

I'm adding xml for more information of my code

<?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"/>

but i get an error saying that "E/AndroidRuntime(11406): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams"

Can someone tell me what's wrong with my code ? Thank's

It's working, use AbsListView instead of RelativeLayout. Thank you for Mr.Piyush Kukadiya

Try this :

Change

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

to

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

UPDATE :

RelativeLayout.LayoutParams and AbsListView.LayoutParams are two different classes of android.widget Package.

Here you are replacing existing layout params of correct type AbsListView.LayoutParams with more generic ViewGroup.LayoutParams ie RelativeLayout.LayoutParams .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM