2014-04-01 103 views
0

我試圖用可擴展列表的父項設置一個特定視圖的顏色,但是當我這樣做時我在子視圖中發現顏色也正在受到影響,這很奇怪。在可擴展列表視圖中設置視圖背景的Android問題

將視圖從白色變爲黑色似乎解決了這個問題,它似乎只出現在一些手機上,它真的開始讓我發瘋,但我找不到任何人遇到同樣的問題。

繼承自我的自定義類,它擴展了BaseExpandableListAdapter。

public View getGroupView(int groupPosition, boolean isExpanded, 
     View convertView, ViewGroup parent) { 

    View v = convertView; 

    if (v == null) { 
     LayoutInflater inflater = (LayoutInflater)ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     v = inflater.inflate(SUM_HOST, parent, false); 
    } 

    View statView = (View)v.findViewById(R.id.statViewABCDE); 

    int caseTest = hostParents.get(groupPosition).getState(); 
    switch (caseTest) { 
     case Constants.STATE_OK: 
      statView.setBackgroundColor(ctx.getResources().getColor(R.color.host_up_state)); 
      break; 
     case Constants.STATE_DOWN: 
      statView.setBackgroundColor(ctx.getResources().getColor(R.color.host_down_state)); 
      break; 
     case Constants.STATE_UNKNOWN: 
      statView.setBackgroundColor(ctx.getResources().getColor(R.color.host_unreachable_state)); 
      break; 
} 


    return v; 

} 

下面是我的父XML文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/LinView1" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:padding="0dp" > 

<LinearLayout 
    android:id="@+id/sumHostLay" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="@dimen/defViewMargin" 
    android:layout_marginRight="@dimen/defViewMargin" 
    android:layout_marginTop="@dimen/defViewMargin" 
    android:background="@drawable/rounded_corners_background" 
    android:gravity="center_horizontal" 
    android:orientation="horizontal" 
    android:padding="@dimen/defViewPadding" > 

    <View 
     android:id="@+id/statViewABCDE" 
     android:layout_width="3dip" 
     android:layout_height="fill_parent" 
     android:background="@android:color/black" /> 

    <TextView 
     android:id="@+id/sumHostTitleAndOutput" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="5dp" 
     android:paddingLeft="5dp" 
     android:singleLine="true" 
     android:text="@string/hostrow_hostname" 
     android:textSize="13sp" /> 
</LinearLayout> 

這裏是我的XML的孩子。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/LinView1" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:layout_margin="0dp" > 

<LinearLayout 
    android:id="@+id/asdasd" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:paddingTop="20dp" 
    android:paddingBottom="20dp" 
    android:layout_marginLeft="20dp" 
    android:layout_marginRight="@dimen/defViewMargin" 
    android:orientation="vertical" > 

    <View 
     android:id="@+id/line1" 
     android:layout_width="1dip" 
     android:layout_height="fill_parent" 
     android:layout_margin="3dp" 
     android:background="@android:color/white" /> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/line2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" > 

    <View 
     android:id="@+id/line4" 
     android:layout_width="20dp" 
     android:layout_height="1dp" 
     android:background="@android:color/white" /> 
</LinearLayout> 

從理論上講,我只是想設置父XML即statViewABCDE但是我發現,背景顏色在子視圖藏漢改變了看法。特別是「line1」和「line4」正在改變。

編輯:

設置線是不同的顏色(即黑色的一組白色其他人,似乎已經奏效,但我不知道爲什麼。)

找到此問題在運行Android 4.1.2的手機上進行測試時發生。

回答

0

我無法找到任何確切的證據,證明這裏發生了什麼。

爲了解決這個問題,我在每個視圖的java中設置了背景的顏色,這似乎解決了這個問題。