布局用这个就可以了,就是添加了一个onFocusChanged方法
public class myListView extends ListView {
public myListView(Context context) {
super(context);
}
public myListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public myListView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public myListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
int lastSelectItem = getSelectedItemPosition();
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
if (gainFocus) {
setSelection(lastSelectItem);
}
}
}
使用
<cn.titansys.waylon.ui.listview.myListView
android:background="#60000000"
android:id="@+id/lv_list"
android:layout_width="200dp"
android:layout_marginBottom="200px"
android:layout_marginLeft="100px"
android:layout_height="800px"
android:listSelector="@drawable/item_focus_sub_left" />
该文章介绍了一个名为myListView的自定义ListView,重写了onFocusChanged方法来处理焦点变化。当获得焦点时,列表会设置为之前选中的项。此实现适用于AndroidLollipop及以上版本。
705

被折叠的 条评论
为什么被折叠?



