0

Я хочу, чтобы установить relativeLayout высоту внутри ListView.Набор 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"/> 

, но я получаю сообщение об ошибке sayin г, что "E/AndroidRuntime(11406): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams"

Может кто-нибудь сказать мне, что не так с моим кодом? Thank's

Это работает, используйте AbsListView вместо RelativeLayout. Спасибо за Mr.Piyush Kukadiya

+0

Вы можете разместить XML-код? –

ответ

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

UPDATE:

RelativeLayout.LayoutParams и AbsListView.LayoutParams являются двумя различными классами android.widget Пакет.

Здесь вы можете найти существующие параметры макета правильного типа AbsListView.LayoutParams с более общим кодом ViewGroup.LayoutParams i.e. RelativeLayout.LayoutParams.

+0

Спасибо, господин Пиюш. Оно работает. Можете ли вы объяснить мне, почему я должен использовать AbsListView вместо RelativeLayout? –

+0

Итак, в этом проблема? Еще раз спасибо г-ну Пиюшу. Я бы предпочел, но это новая учетная запись. Я должен достичь 15 репутации. –

Смежные вопросы