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