Android TabHost和SearchView焦点问题

丹尼斯·里佐夫(Denis Rizov)

我有一个很奇怪的问题。我有一个带有片段的传呼机。片段之一是消息片段。在这个片段中,我有一个带有三个标签片段的FragmentTabHost。在操作栏中,我有一个SearchView。当我要搜索某些内容并开始编写查询字符串时,搜索视图的焦点将从其中移出,并设置为TabHost的第一个选项卡。这样我就不能写查询字符串。仅当我在MessagesFragment附近时才会发生这种情况。例如:如果我够远(一页),则搜索工作正常。

有人可以告诉我问题是什么吗?

这是一张图片: Android TabHost问题

消息片段:

public class MessagesFragment extends Fragment {
private FragmentTabHost tabHost;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    this.tabHost = new FragmentTabHost(this.getActivity());
    this.tabHost.setup(this.getActivity(), this.getChildFragmentManager(), container.getId());

    TabSpec tabSpecForAllMessages = this.tabHost.newTabSpec("all").setIndicator("ALL");
    this.tabHost.addTab(tabSpecForAllMessages, AllMessagesFragment.class, null);

    TabSpec tabSpecForSentMessages = this.tabHost.newTabSpec("sent").setIndicator("SENT");
    this.tabHost.addTab(tabSpecForSentMessages, SentMessagesFragment.class, null);

    TabSpec tabSpecForReceivedMessages = this.tabHost.newTabSpec("received").setIndicator("RECEIVED");
    this.tabHost.addTab(tabSpecForReceivedMessages, ReceivedMessagesFragment.class, null);

    return this.tabHost;
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    this.tabHost = null;
}

}

选项卡主机布局:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </TabWidget>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>
</LinearLayout>

</TabHost>

操作栏菜单项:

<?xml version="1.0" encoding="utf-8"?>

<item
    android:id="@+id/menu_item_search"
    android:actionViewClass="android.widget.SearchView"
    android:icon="@drawable/ic_action_search"
    android:showAsAction="collapseActionView|ifRoom"
    android:title="@string/title_search" />

<item
    android:id="@+id/menu_item_home"
    android:icon="@drawable/ic_action_home"
    android:showAsAction="always"
    android:title="@string/title_home" />

onCreateOptionsMenu事件处理程序:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = this.getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    // Associate searchable configuration with the SearchView
    SearchManager searchManager =
            (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView =
            (SearchView) menu.findItem(R.id.menu_item_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(this
            .getComponentName()));

    return true;
}
亚历山大·图特克维奇

尝试添加方法

@Override
public boolean onQueryTextChange(String text) {
    if(searchView!=null)
        searchView.requestFocusFromTouch();

    return true;
}

searchView必须是init SearchView searchView;

我的onCreateOptionsMenu方法:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.only_search, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            searchView.requestFocusFromTouch();
            return true;
        }
    });
}

对我有用!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android的SearchView和NavigationDrawer

来自分类Dev

Recycler Android中SearchVIew的问题

来自分类Dev

Android searchview隐藏键盘,但不会失去焦点

来自分类Dev

Android:如何以编程方式使SearchView失去焦点

来自分类Dev

Android searchview隐藏键盘,但不会失去焦点

来自分类Dev

Android SDK 22-SearchView呈现问题

来自分类Dev

Android Studio + Dragon NaturallySpeaking =焦点问题

来自分类Dev

Android:CollapsingToolbarLayout和SearchView,文本重叠

来自分类Dev

结合使用SearchView和ArrayList Android Studio

来自分类Dev

Android SearchView

来自分类Dev

scrollIntoView和焦点问题

来自分类Dev

当searchview成为焦点时,Android appcompat工具栏会拉伸

来自分类Dev

Android-TabHost / TabWidget

来自分类Dev

嵌套的tabhost片段android

来自分类Dev

Android TabHost示例

来自分类Dev

在Tabhost中滑动Android

来自分类Dev

Android TabHost奇怪的错误

来自分类Dev

Android TabHost 等价于 setIndex

来自分类Dev

高度大于屏幕时,Android TextInputLayout书写焦点问题

来自分类Dev

Android SearchView:setOnFocusChangeListener()和setOnQueryTextFocusChangeListener有什么区别?

来自分类Dev

带有列表视图和LoaderCallBack的Android Searchview

来自分类Dev

Android SearchView:setOnFocusChangeListener()和setOnQueryTextFocusChangeListener有什么区别?

来自分类Dev

Android除法和乘法问题

来自分类Dev

Eclipse和Android SDK的问题

来自分类Dev

Eclipse和Android SDK的问题

来自分类Dev

Android的fragment和fragmentActivity问题

来自分类Dev

Android:ScollView和ViewPager的问题

来自分类Dev

Android Scrollview和布局问题

来自分类Dev

IE Onblur和焦点问题