Expandablelistview背景在展开时变为黑色

时间:2012-03-25 13:25:46

标签: android expandablelistview

我在Android 2.3.5(以及可能早期的Android版本)上遇到此问题

当我的expnadablelistview折叠后,背景会正确显示。只要一个组行被展开,其背景就会变黑。

这是listview

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
android:background="@drawable/bg"
>

    <TextView  
        android:id="@+id/ExpandableListText"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:textColor = "#490600"
        android:paddingRight = "25sp"
        android:paddingLeft = "25sp"
    />

    <ExpandableListView 
        android:id="@+id/ExpandableListView01" 
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:divider="#000000"
        android:dividerHeight="1sp"
        android:childDivider="#000000"
        android:headerDividersEnabled="true"
        android:footerDividersEnabled="true"
        android:scrollingCache="false"
        android:cacheColorHint="#00000000"
         android:drawSelectorOnTop="true"
    />
</LinearLayout>

这是组行的XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"

>

    <TextView
        android:id="@+id/TextViewGroup" 
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginLeft="50sp"
        android:gravity="center_vertical"
        android:textColor = "#490600"
        android:paddingTop="7dip"
        android:paddingBottom="7dip"
    ><!--  -->
    </TextView>

</LinearLayout>

这是child_row XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"

>
 <!-- android:background="#666666" -->
    <!--  -->
    <TextView
        android:id="@+id/TextViewChild01" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30sp"
        android:textColor = "#000000"
    >
    </TextView>

    <TextView
        android:id="@+id/TextViewChild02" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10sp"
        android:textColor = "#000000"
    >
    </TextView>

    <TextView
        android:id="@+id/TextViewChild03" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10sp"
        android:textColor = "#000000"
    >
    </TextView>

</LinearLayout>

非常感谢任何帮助

4 个答案:

答案 0 :(得分:3)

自定义ExpandableListView类,然后 -

package com.test
//....................

View getView(.....) {
   View v = super.getView(....);

   //........
   //change it your color or or set the text you want.
   return(v);
}

然后将其设置为您的布局 -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
>

<TextView  
    android:id="@+id/ExpandableListText"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor = "#490600"
    android:paddingRight = "25sp"
    android:paddingLeft = "25sp"
/>

<com.test.ExpandableListView 
    android:id="@+id/ExpandableListView01" 
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:divider="#000000"
    android:dividerHeight="1sp"
    android:childDivider="#000000"
    android:headerDividersEnabled="true"
    android:footerDividersEnabled="true"
    android:scrollingCache="false"
    android:cacheColorHint="#00000000"
     android:drawSelectorOnTop="true"
/>

答案 1 :(得分:2)

在开始创建新视图之前,请确保已在布局文件中为视图设置了“缓存颜色提示”属性。在选择/滚动期间,该属性应设置为您首选的背景颜色---否则视图将默认为黑色。

答案 2 :(得分:1)

我有同样的问题,显然这是2.3版本的一个错误,并与android:child Divider =“#000000”相关联,只需删除它,黑色背景就会消失。

答案 3 :(得分:0)

扩展Suvam Roy的答案,对我有用的是确保从代码或相关的布局文件中明确分配从GetChildView返回的子视图的背景(无论使用哪种技术定义视图) )。

这样做的缺点是你松开了默认项目点击突出显示。将背景设置为可绘制的选择器很容易,但我还没有能够复制淡出效果(即使将所有涉及的android内置drawable复制到我的应用程序的空间)。

作为参考,大多数列表的默认drawable(提供带有淡出效果的精彩点击突出显示)是

Android.Resource.Drawable.ListSelectorBackground

最终只需将ExpandableListView上的cacheColorHint设置为'#00000000'(半透明)

Expandable List Android Black background while scrolling