更改列表视图中所选项目的线性布局背景

时间:2013-11-20 08:19:42

标签: android android-listview

我想在列表视图中更改所选项目的线性布局背景。我已经使用了选择器。但它只改变背景一次&然后再次转到默认状态。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="schemas.android.com/apk/res/android">;
  <item android:state_pressed="true" android:drawable="@drawable/box_2" />
  <item android:state_focused="true" android:drawable="@drawable/box_2" />
  <!-- focused -->
  <item android:state_hovered="true" android:drawable="@drawable/box_2" />
  <!-- hovered -->
  <item android:state_selected="true" android:drawable="@drawable/box_2" />
  <!-- selected -->
  <item android:drawable="@drawable/box" />
  <!-- default -->
</selector>

2 个答案:

答案 0 :(得分:1)

如果您想永久更改LinearLayout背景,您必须这样做:

    //lay is your layout!
    //if you create a file color.xml in res/values
    lay.setBackgroundColor(R.color.blue);
    //different way
    lay.setBackgroundResource(getResources().getColor(R.color.blue));
    //or if you want to set a drawable as background
    lay.setBackgroundResource(getResources().getDrawable(/*your drawable*/));

在布局的OnClickListene内使用此代码。 您使用的代码仅在点击/焦点时更改背景。 希望它能帮到你!

答案 1 :(得分:0)

我认为滚动列表会出现这个问题,是吗? 试试这个

     //  Use ScrollView instead of ListView
         Product_Conttainer=(ScrollView)ConvertView.findViewById(R.id.loadProducts);
         Product_Conttainer.addView(SetScrollList());
         }

         public LinearLayout SetScrollList()
      {
           for(Index=0;Index<list_order.size();Index++)
            {
                View assignedView=ScrollViewSet();
                csLayout.addView(assignedView);
                       }
             return csLayout;
            }

         public View ScrollViewSet()
        {


             View csview  =LayoutInflater.from(getApplicationContext()).inflate(R.layout.rowitemdisp, null);

    final RelativeLayout containerlayout = (RelativeLayout)csview.findViewById(R.id.viewContainer);
        containerlayout.setOnLongClickListener(new OnLongClickListener()
    {

    });
            }

OR ELSE尝试此链接

Android-Listview items background color changing when scrolling