2011-02-16 38 views
1

我的问题是,我有自定义listView从Runnable returnRes填充。它填充了我命名为lay(R.id.layoutList)的布局中的特定数据。我的目标是为我的listView中的每一层都有不同的颜色,我想在每个层之间切换颜色。第一个是深蓝色,第二个浅蓝色,thir深蓝色等等......这段代码表现不错,但没有结果,我的自定义listView仍然是黑色的,当我在XML中更改它时,它正在改变,但不是当它是从Java设置的。有任何想法吗?Android - 从Java代码更改背景

感谢

private Runnable returnRes = new Runnable() { 

    @Override 
    public void run() { 
     if(myTasks != null && myTasks.size() > 0){ 
      TasksAdapter.notifyDataSetChanged(); 

      LinearLayout lay=(LinearLayout)findViewById(R.id.layoutList); 

      for(int i=0;i<myTasks.size();i++){ 
       TasksAdapter.add(myTasks.get(i)); 
       if(i>0){ 
        if(i%2==0){ 
         lay.setBackgroundColor(R.color.background); 
        } 
       }else{ 
        if(i>0){ 
         lay.setBackgroundColor(R.color.lightBlue); 
        } 

       } 
      } 
     } 
     ProgressDialog.dismiss(); 
     TasksAdapter.notifyDataSetChanged(); 
    } 
    }; 
+0

试试这个地方在活动的onCreate(): `getListView()setBackgroundColor(Color.TRANSPARENT);`` getListView()setCacheColorHint(Color.TRANSPARENT);` – TomTasche 2011-03-02 13:27:57

回答

1

尝试使然。 getResources().R.color.lightBlue不是实际颜色,它是ID颜色资源(这是一种颜色的整数代码)。如果在需要资源ID的API中使用它 ,但它会正常工作,但setBackgroundColor 实际上需要该颜色的代码。

colorsids都只是编码为int当你下来吧,所以它的 很容易混淆一个用于其他。

1
yourlayout.setBackgroundDrawable(getResources().getDrawable(R.drawable.yourbackgroundimage))