制作一个没有背景的虚拟视图,并将其放置在与列表视图相同的布局中。使其可聚焦并将搜索视图的 nextFocusRight 设置为 id/dummy。
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:choiceMode="singleChoice"
android:listSelector="@null"
android:background="@null"
></ListView>
<View
android:id="@+id/dummy"
android:layout_width="1dp"
android:layout_height="1dp"
android:focusable="true"
/>
您的搜索视图:
<YourSearchView
android:nextFocusItemRight=@+id/dummy/>
然后在代码中,将 OnFocusChangedListener 设置为虚拟视图,这将指示 ListView 应该获得焦点。在侦听器中,请求列表视图的焦点并将选择设置为 0,如下所示:
View dummy = rootView.findViewById(R.id.dummy);
dummy.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
@Override public void onFocusChange(View v, boolean hasFocus)
{
if (hasFocus)
{
listView.post(new Runnable() {
@Override
public void run() {
listView.requestFocus();
listView.setSelection(0);
}
});
}
}
});
确保将@+id 用于nextFocusItemRight 而不是@id。希望对您有所帮助,否则发表评论。