您好我想更改listView项目的背景。但它只在触摸时突出显示。但我想更改背景,直到我将焦点更改为其他项目。 我到目前为止所做的就是下面的内容。
Back.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_enabled="false" android:state_focused="true"
android:drawable="@android:color/black" />
<item android:state_pressed="true"
android:drawable="@android:color/holo_red_dark" />
<item android:state_focused="true"
android:drawable="@android:color/holo_red_dark" />
的ListView
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:fastScrollEnabled="true"
android:drawSelectorOnTop="true"
android:clickable="true"
android:listSelector="@drawable/listviewcolor"
android:scrollingCache="false">
</ListView>
在Main我已经尝试了一切但不起作用它只在触摸时突出显示。 但我想保持突出,直到我改变它。
ListView.requestFocus();
ListView.setActivated(true);
ListView.setPressed(true);
ListView.setItemChecked(4, true);
ListView.requestFocusFromTouch();
ListView.setSelection(2);
答案 0 :(得分:0)
这只能通过以下方式使用customAdapter
来实现。
当用户触摸布局设计中的其他项目时,最初Listview
将失去焦点。保持选择的一种方法,即使它没有被关注,也是:
ListView
中的所选位置。 ListView
适配器中的选定位置,并根据选择设置其视图背景颜色。通过这样做,您的背景颜色将保持选中状态。
实施例: 在自定义适配器内:
Private int studentListItemSelected;
public void ItemSelected(int itemPosition)
{
//This method will keep track which position of the List is Selected and the background color of it is inside this.
this.studentListItemSelected=studentListItemSelected;
notifyDataSetChanged();
}
public View getView(int position, View convertView, ViewGroup parent)
{
//layout inflation code
if(this.studentListItemSelected==position)
{
convertView.setBackgroundColor(Color.Red);
}
else
{
convertView.setBackgroudnColor(Color.White);
}
return convertView;
}
在您的布局Java文件中:
yourListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
adapter.ItemSelected(position);
});