首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >更改搜索视图中的默认搜索图标位置

更改搜索视图中的默认搜索图标位置
EN

Stack Overflow用户
提问于 2016-01-20 17:10:15
回答 2查看 3.9K关注 0票数 3

我在我的项目中使用搜索视图为用户添加搜索功能。我的问题是我想把搜索图标的位置从工具栏的右边改为左边。

这是我的菜单代码:

代码语言:javascript
复制
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item
    android:id="@+id/action_search"
    android:title="@android:string/search_go"
    android:icon="@drawable/search"
    app:showAsAction="ifRoom|collapseActionView"
    app:actionViewClass="android.support.v7.widget.SearchView"
    android:visible="true"/>

这是我的活动代码:

代码语言:javascript
复制
private SearchView mSearchView;
private MenuItem searchMenuItem;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    searchMenuItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) searchMenuItem.getActionView();
    mSearchView.setLayoutParams(new ActionBar.LayoutParams(Gravity.LEFT));
    mSearchView.setOnQueryTextListener(listener);
    return true;
}

SearchView.OnQueryTextListener listener = new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String query) {
        if (query.equals("") || query.equals(" ")){
            Toast.makeText(G.context,"ابتدا یک متن برای جستجو بنویسید.",Toast.LENGTH_SHORT).show();
            return false;
        }
        Intent intent = new Intent(ContentsActivity.this,SearchActivity.class);
        intent.putExtra("KEYWORD", query);
        ContentsActivity.this.startActivity(intent);
        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        return false;
    }
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-22 18:27:21

所以我终于找到了解决方案。请注意,这不是一个好的解决方案。但它对我来说很好。

在menu_main.xml中:

代码语言:javascript
复制
<item
    android:id="@+id/action_search"
    android:title="@android:string/search_go"
    android:icon="@drawable/search"
    app:showAsAction="always"
    app:actionViewClass="android.support.v7.widget.SearchView"
    android:visible="false"/>

在菜单文件中,我将搜索图标的可见性设置为false。因此,现在当用户单击工具栏中的搜索图标时,我将可见性设置为true。

代码语言:javascript
复制
imgCatSearch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mSearchView.setBackgroundColor(Color.WHITE);
            Animation anim = AnimationUtils.loadAnimation(G.context,R.anim.m_anim);
            searchMenuItem.setVisible(true);
            mSearchView.setIconified(false);
            mSearchView.startAnimation(anim);
        }
    });

因此,当用户单击操作栏中的搜索按钮时,搜索视图可见性变为true并打开。

最后,此代码用于当用户在searchView中单击close按钮时使用:

代码语言:javascript
复制
mSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
        @Override
        public boolean onClose() {
            searchMenuItem.setVisible(false);
            return false;
        }
    });
票数 0
EN

Stack Overflow用户

发布于 2018-06-02 08:01:37

在工具栏xml代码中,将方向设置为右。像这样的android:layoutDirection="rtl“

代码语言:javascript
复制
       <android.support.v7.widget.Toolbar
        android:layoutDirection="rtl"
        android:id="@+id/basepage_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="#D4AC0D"
        app:popupTheme="@style/AppTheme.PopupOverlay"
        >
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34895750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档